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);
    }

当然,您需要设置正确的内容类型。