Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从userinput字段添加json正文_C#_Json_Rest_Uwp_Restsharp - Fatal编程技术网

C# 从userinput字段添加json正文

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正文 我不知道是什么问题,但我认为有些字符的

在我的UWP应用程序中,用户可以在文本字段中输入json正文,并通过Rest将其设置为POST Rest请求中的正文

因此,用户将其输入文本框(值绑定到requestBody):

然后我将字符串添加到请求中:

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);非常感谢。