San*_*isy 18 c# restsharp asp.net-core-mvc asp.net-core
我已经浏览了http://restsharp.org/代码,这些代码很有用.下面是带有asp.net核心的RestSharp的代码.
public GenericResponseObject<T> GetGeneric<T>(string operation, params KeyValuePair<string, string>[] nameValues) where T : class
{
RestClient client = new RestClient(_baseUrl)
{
Authenticator = new HttpBasicAuthenticator(_username, _password)
};
RestRequest request = new RestRequest(operation, Method.GET);
foreach (KeyValuePair<string, string> nameValue in nameValues)
{
request.AddQueryParameter(nameValue.Key, nameValue.Value);
}
IRestResponse<GenericResponseObject<T>> response = client.Execute<GenericResponseObject<T>>(request);
GenericResponseObject<T> responseObject = response.Data;
return responseObject;
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码对我很有用.现在我想在asp.net核心中实现相同的代码.
我可以获得一个示例如何在asp.net核心中使用RestSharp.我添加了依赖项RestSharp.NetCore":105.2.3.
Ale*_*rev 35
RestSharp v106支持.NET Standard,因此您的代码无需更改即可运行.
RestSharp.NetCorepackage不是来自RestSharp团队,我们不支持.它也没有被更新,并且所有者不对消息做出响应,也没有发布包的源代码.
gld*_*ael 19
添加到Antwone Antics的答案,创建一个扩展类:
public static class RestClientExtensions
{
public static async Task<RestResponse> ExecuteAsync(this RestClient client, RestRequest request)
{
TaskCompletionSource<IRestResponse> taskCompletion = new TaskCompletionSource<IRestResponse>();
_ = client.ExecuteAsync(request, r => taskCompletion.SetResult(r));
return (RestResponse)(await taskCompletion.Task);
}
}
Run Code Online (Sandbox Code Playgroud)
您现在可以按如下方式使用它:
var client = new RestClient(BASE_URL);
var request = new RestRequest();
// do whatever else you want/need to, to the request
// ...
// ... and use it like we used to
var response = await client.ExecuteAsync(request);
Run Code Online (Sandbox Code Playgroud)
您还可以创建扩展方法来解析响应以返回强类型等.
小智 6
现有的StackOverflow问题和示例在RestSharp.NetCore 上调用ExecuteAsync.
RestSharp.NetCore中的ExecuteAsyncPost示例
我在使用Newtonsoft.Json 9.0.2-beta2引用RestSharp.NetCore 105.2.3时成功使用了该示例.
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using RestSharp;
public async Task<SomeObject> TestPost(ObjectFoo foo)
{
JsonSerializerSettings jsonSerializerSettings = new JsonSerializerSettings {
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
RestClient restClient = new RestClient(API_URL);
RestRequest request = new RestRequest("SOME_METHOD", Method.POST);
request.AddHeader("Accept", "application/json");
string jsonObject = JsonConvert.SerializeObject(foo, Formatting.Indented, jsonSerializerSettings);
request.AddParameter("application/json", jsonObject, ParameterType.RequestBody);
TaskCompletionSource<IRestResponse> taskCompletion = new TaskCompletionSource<IRestResponse>();
RestRequestAsyncHandle handle = restClient.ExecuteAsync(
request, r => taskCompletion.SetResult(r));
RestResponse response = (RestResponse)(await taskCompletion.Task);
return JsonConvert.DeserializeObject<SomeObject>(response.Content);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27100 次 |
| 最近记录: |