C# 从userinput字段添加json正文
在我的UWP应用程序中,用户可以在文本字段中输入json正文,并通过Rest将其设置为POST Rest请求中的正文 因此,用户将其输入文本框(值绑定到requestBody): 然后我将字符串添加到请求中:C# 从userinput字段添加json正文,c#,json,rest,uwp,restsharp,C#,Json,Rest,Uwp,Restsharp,在我的UWP应用程序中,用户可以在文本字段中输入json正文,并通过Rest将其设置为POST Rest请求中的正文 因此,用户将其输入文本框(值绑定到requestBody): 然后我将字符串添加到请求中: request.AddParameter("application/json; charset=utf-8", requestBody, ParameterType.RequestBody); 主体已添加,但不正确。 服务器不解析传入的json正文 我不知道是什么问题,但我认为有些字符的
request.AddParameter("application/json; charset=utf-8", requestBody, ParameterType.RequestBody);
主体已添加,但不正确。
服务器不解析传入的json正文
我不知道是什么问题,但我认为有些字符的编码不正确
有人用这种方式添加json主体吗
此解决方案的工作原理是:
var b = JsonConvert.DeserializeObject<Object>(requestBody);
request.AddJsonBody(b);
var b=JsonConvert.DeserializeObject(requestBody);
请求。AddJsonBody(b);
但这并不是对我有用的干净的代码示例:
var client = new RestClient("http://localhost");
var request = new RestRequest("pathtoservice", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddParameter("application/json", "{ \"Some\": \"Data\" }", ParameterType.RequestBody);
var result = client.Execute(request);
为完整起见,在使用RestSharp便携式设备时,上述内容应为:
var client = new RestClient("http://localhost");
var request = new RestRequest("pathtoservice", Method.POST);
var requestBody = Encoding.UTF8.GetBytes("{ \"Some\": \"Data\" }");
request.AddParameter("application/json; charset=utf-8", requestBody, ParameterType.RequestBody);
var result = client.Execute(request);
适用于我的代码示例:
var client = new RestClient("http://localhost");
var request = new RestRequest("pathtoservice", Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddParameter("application/json", "{ \"Some\": \"Data\" }", ParameterType.RequestBody);
var result = client.Execute(request);
为完整起见,在使用RestSharp便携式设备时,上述内容应为:
var client = new RestClient("http://localhost");
var request = new RestRequest("pathtoservice", Method.POST);
var requestBody = Encoding.UTF8.GetBytes("{ \"Some\": \"Data\" }");
request.AddParameter("application/json; charset=utf-8", requestBody, ParameterType.RequestBody);
var result = client.Execute(request);
什么是完整的请求定义?您是否也添加了
request.RequestFormat=DataFormat.Json代码>?RestRequest类没有成员RequestFormat您是否可以通过整个代码?var restClient=new restClient(baseUri);var请求=新的重新请求(路径,方法.POST);AddParameter(“application/json;charset=utf-8”,requestBody,ParameterType.requestBody);ar响应=等待restClient.Execute(请求);您是否尝试过Microsoft.Net.HttpClient,因为不再维护ResharpPortable,这似乎更直截了当一些。完整的请求定义是什么?您是否也添加了request.RequestFormat=DataFormat.Json代码>?RestRequest类没有成员RequestFormat您是否可以通过整个代码?var restClient=new restClient(baseUri);var请求=新的重新请求(路径,方法.POST);AddParameter(“application/json;charset=utf-8”,requestBody,ParameterType.requestBody);ar响应=等待restClient.Execute(请求);您是否尝试过Microsoft.Net.HttpClient,因为不再维护ResharpPortable,所以看起来更直截了当一些。在restsharp.portable库中,RestRequest类没有成员RequestFormatha,不知道您正在使用.Net Core/portable(当它出现在问题的标题中时…)。也许可以尝试UTF-8编码主体:var someone=Encoding.UTF8.GetBytes(requestBody)编码>并在AddParameter方法中使用它。该方法有效:var someone=Encoding.UTF8.GetBytes(requestBody);AddParameter(“application/json;charset=utf-8”,someone,ParameterType.RequestBody);感谢您在restsharp.portable库中RestRequest类没有成员requestformatha,不知道您正在使用.NET Core/portable(当它出现在问题的标题中时…)。也许可以尝试UTF-8编码主体:var someone=Encoding.UTF8.GetBytes(requestBody)编码>并在AddParameter方法中使用它。该方法有效:var someone=Encoding.UTF8.GetBytes(requestBody);AddParameter(“application/json;charset=utf-8”,someone,ParameterType.RequestBody);非常感谢。