使用 RestSharp Post 对象作为 JSON 并从调用的另一端读取它
Use RestSharp Post Object as JSON and read it from the other side of the call
我有一个 C# REST Web API 并且我有一些像这样的代码可以向端点发出请求。我想传递的一些数据是我自己类型的对象,因为它是一个复杂的对象,所以我想使用 POST.
传递它
RestClient client = new RestClient(Constants.Endpoints.serviceEndPoint)
{
Timeout = 1000
};
string requestResource = Constants.Endpoints.apiEndPoint;
RestRequest request = new RestRequest(requestResource, Method.POST);
request.AddParameter("Authorization", $"Bearer {accessToken}", ParameterType.HttpHeader);
request.AddHeader("Accept", "application/json");
request.AddParameter("id", id, ParameterType.UrlSegment);
request.AddParameter("text/json", objectIWantToSerialize, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
另一方面,我正在尝试使用类似这样的代码读取对象本身
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var content in provider.Contents)
{
// what should I do here to read the content as a JSON
// and then transform it as the object it used to be before the call?
}
我试过 await content.ReadAsJsonAsync< MyType>(); 但也试过 await content.ReadAsStringAsync();[=其中 22=] 和 none 有效。我在客户端执行时是否做错了什么?还是我一边看内容一边做的事情?
代替这一行:
request.AddParameter("text/json", objectIWantToSerialize, ParameterType.RequestBody);
您应该使用 .AddBody(object)
方法。
所以你的代码看起来像这样:
RestRequest request = new RestRequest(requestResource, Method.POST);
//add other headers as needed
request.RequestFormat = DataFormat.Json;
request.AddBody(objectIWantToSerialize);
IRestResponse response = client.Execute(request);
在服务器上,如果您使用 MVC/WebAPI,您只需将 C# 类型作为输入,ASP.NET 将为您反序列化。如果没有,您能否提供更多关于您如何收到请求的背景信息?
我有一个 C# REST Web API 并且我有一些像这样的代码可以向端点发出请求。我想传递的一些数据是我自己类型的对象,因为它是一个复杂的对象,所以我想使用 POST.
传递它RestClient client = new RestClient(Constants.Endpoints.serviceEndPoint)
{
Timeout = 1000
};
string requestResource = Constants.Endpoints.apiEndPoint;
RestRequest request = new RestRequest(requestResource, Method.POST);
request.AddParameter("Authorization", $"Bearer {accessToken}", ParameterType.HttpHeader);
request.AddHeader("Accept", "application/json");
request.AddParameter("id", id, ParameterType.UrlSegment);
request.AddParameter("text/json", objectIWantToSerialize, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
另一方面,我正在尝试使用类似这样的代码读取对象本身
var provider = new MultipartMemoryStreamProvider();
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var content in provider.Contents)
{
// what should I do here to read the content as a JSON
// and then transform it as the object it used to be before the call?
}
我试过 await content.ReadAsJsonAsync< MyType>(); 但也试过 await content.ReadAsStringAsync();[=其中 22=] 和 none 有效。我在客户端执行时是否做错了什么?还是我一边看内容一边做的事情?
代替这一行:
request.AddParameter("text/json", objectIWantToSerialize, ParameterType.RequestBody);
您应该使用 .AddBody(object)
方法。
所以你的代码看起来像这样:
RestRequest request = new RestRequest(requestResource, Method.POST);
//add other headers as needed
request.RequestFormat = DataFormat.Json;
request.AddBody(objectIWantToSerialize);
IRestResponse response = client.Execute(request);
在服务器上,如果您使用 MVC/WebAPI,您只需将 C# 类型作为输入,ASP.NET 将为您反序列化。如果没有,您能否提供更多关于您如何收到请求的背景信息?