RestSharp - 如果我正在从文件中读取 json,则无法使用 RestSharp post json
RestSharp - Not able to post json using RestSharp if I am reading my json from a file
我正在努力完成这项工作并尝试了各种选择,但当我从文件中读取它并将其传递到 request.AddJsonBody(jsonBody);
[=17 时无法 post JSON =]
注意* 它有效,当我尝试像这样直接传递它时:request.AddJsonBody(new { deviceId = "qa" });
但我的要求是将请求保存在一个文件中,然后从那里读取并传入 request.AddJsonBody(jsonBody);
AddBody 已弃用,因此我正在使用 AddJsonBody。从文件中读取内容然后转换为 JsonObject 以传入 AddJsonBody 不起作用,因为它会将其视为我们未通过有效 json 或将其视为空 json.
[TestMethod]
public void createWithFile()
{
static readonly string textFile = @"C:\Users\RequestFiles\Users.txt"; // sample contents of my file : {"deviceId" : "qa"}
if (File.Exists(textFile))
{
text = File.ReadAllText(textFile);
}
JObject jsonBody = JObject.Parse(text);
Console.WriteLine(jsonBody);
RestClient client = new RestClient("myurl");
var request = new RestRequest(Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddJsonBody(jsonBody);
request.AddHeader("Accept", "application/json");
var response = client.Execute(request);
Console.WriteLine(response.Content);
Console.WriteLine(response.StatusCode.ToString());
}
您可以发送任何 文本作为请求正文。 AddJsonBody
专门设计用于序列化作为参数提供给 JSON 的对象。如果您已经有了 JSON 字符串,只需使用带有 RequestBody
参数类型的 AddParameter
。
从test code可以看出:
[Test]
public void Can_Be_Added_To_PUT_Request()
{
const Method httpMethod = Method.PUT;
var client = new RestClient(_server.Url);
var request = new RestRequest(RequestBodyCapturer.Resource, httpMethod);
const string contentType = "text/plain";
const string bodyData = "abc123 foo bar baz BING!";
request.AddParameter(contentType, bodyData, ParameterType.RequestBody);
client.Execute(request);
AssertHasRequestBody(contentType, bodyData);
}
当然,您需要设置正确的内容类型。
我正在努力完成这项工作并尝试了各种选择,但当我从文件中读取它并将其传递到 request.AddJsonBody(jsonBody);
[=17 时无法 post JSON =]
注意* 它有效,当我尝试像这样直接传递它时:request.AddJsonBody(new { deviceId = "qa" });
但我的要求是将请求保存在一个文件中,然后从那里读取并传入 request.AddJsonBody(jsonBody);
AddBody 已弃用,因此我正在使用 AddJsonBody。从文件中读取内容然后转换为 JsonObject 以传入 AddJsonBody 不起作用,因为它会将其视为我们未通过有效 json 或将其视为空 json.
[TestMethod]
public void createWithFile()
{
static readonly string textFile = @"C:\Users\RequestFiles\Users.txt"; // sample contents of my file : {"deviceId" : "qa"}
if (File.Exists(textFile))
{
text = File.ReadAllText(textFile);
}
JObject jsonBody = JObject.Parse(text);
Console.WriteLine(jsonBody);
RestClient client = new RestClient("myurl");
var request = new RestRequest(Method.POST);
request.RequestFormat = DataFormat.Json;
request.AddJsonBody(jsonBody);
request.AddHeader("Accept", "application/json");
var response = client.Execute(request);
Console.WriteLine(response.Content);
Console.WriteLine(response.StatusCode.ToString());
}
您可以发送任何 文本作为请求正文。 AddJsonBody
专门设计用于序列化作为参数提供给 JSON 的对象。如果您已经有了 JSON 字符串,只需使用带有 RequestBody
参数类型的 AddParameter
。
从test code可以看出:
[Test]
public void Can_Be_Added_To_PUT_Request()
{
const Method httpMethod = Method.PUT;
var client = new RestClient(_server.Url);
var request = new RestRequest(RequestBodyCapturer.Resource, httpMethod);
const string contentType = "text/plain";
const string bodyData = "abc123 foo bar baz BING!";
request.AddParameter(contentType, bodyData, ParameterType.RequestBody);
client.Execute(request);
AssertHasRequestBody(contentType, bodyData);
}
当然,您需要设置正确的内容类型。