Asp.net mvc 4中出现的web api是用来实现REST.
关于什么是REST,可以看这里http://zh.wikipedia.org/zh/REST
通过ajax等访问 web api非常方便,但是如何在Winform, Silverlight等访问web api呢?
通过搜索,发现了已经有人做过这个东西了,就是RestSharp.
https://github.com/restsharp/RestSharp
RestSharp不只是访问web api, 访问其他平台的Rest API也是一样。
看看介绍的使用,无论是post数据,文件,格式化返回数据,异步请求都非常方便:
var client = new RestClient("http://example.com"); // client.Authenticator = new HttpBasicAuthenticator(username, password); var request = new RestRequest("resource/{id}", Method.POST); request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method request.AddUrlSegment("id", 123); // replaces matching token in request.Resource // add parameters for all properties on an object request.AddObject(object); // or just whitelisted properties request.AddObject(object, "PersonId", "Name", ...); // easily add HTTP Headers request.AddHeader("header", "value"); // add files to upload (works with compatible verbs) request.AddFile(path); // execute the request RestResponse response = client.Execute(request); var content = response.Content; // raw content as string // or automatically deserialize result // return content type is sniffed but can be explicitly set via RestClient.AddHandler(); RestResponse<Person> response2 = client.Execute<Person>(request); var name = response2.Data.Name; // or download and save file to disk client.DownloadData(request).SaveAs(path); // easy async support client.ExecuteAsync(request, response => { Console.WriteLine(response.Content); }); // async with deserialization var asyncHandle = client.ExecuteAsync<Person>(request, response => { Console.WriteLine(response.Data.Name); }); // abort the request on demand asyncHandle.Abort();