为什么RestSharp请求方法从POST更改为GET?

时间:2017-02-15 11:47:42

标签: c# restsharp dotnet-httpclient

我正在使用RestSharp将一些数据发布到网址。我正在使用fiddler监视此操作。当我使用Simple .net HttpClient 时,使用以下代码:

using (var client = new HttpClient())
        {
            var values = new Dictionary<string, string>  {
                { "par1", "1395/11/29" },
                { "par2", "2" }};
            var content = new FormUrlEncodedContent(values);
            var response = await client.PostAsync("http://someurl.com/resource", content);
            var responseString = await response.Content.ReadAsStringAsync();
}

每件事情都很好,这会带来真实的结果。但是当我尝试使用 RestSharp 时使用此代码:

 RestSharp.RestRequest request = new RestSharp.RestRequest("/resource");
 request.AddParameter("par1", val, RestSharp.ParameterType.RequestBody);
 request.AddParameter("par2", val, RestSharp.ParameterType.RequestBody);
 request.AddHeader("Origin", "http://someurl.com");
 request.Method = RestSharp.Method.POST;
 RestSharp.RestClient client = new RestSharp.RestClient("http://someurl.com");
 var response = client.Execute(request);

然后fiddler告诉我GET方法而不是POST发送的请求?

我再次检查我的小提琴手并发现了这个问题:

  

内容类型:par1

为什么会发生这种情况?

3 个答案:

答案 0 :(得分:0)

将您的ParameterType参数更改为 GetOrPost ,它将起作用

request.AddParameter("par1", val, RestSharp.ParameterType.GetOrPost);
request.AddParameter("par2", val, RestSharp.ParameterType.GetOrPost);

答案 1 :(得分:0)

  1. 使用JSON将请求初始化为POST。

    var client = new RestClient(PreUri);

    var request = new RestRequest(Uri,Method.POST){RequestFormat = DataFormat.Json};

  2. 在正文中添加对象

    request.AddBody(OBJ);

  3. <强>执行

    var cancellationTokenSource = new CancellationTokenSource();

    var response = await client.ExecuteTaskAsync(request,cancellationTokenSource.Token);

答案 2 :(得分:0)

我愚蠢地犯了错误,称其为“ client.Get”而不是“ client.Post”。可能是这篇文章对其他人有帮助。

var client = new RestClient("https://someservice.com");
var request = new RestRequest("/token/", Method.POST, DataFormat.Json).AddJsonBody(SomeObject);
var response = client.Get(request);

我期望此代码发出POST请求。因为我将其指定为 Method.POST 。 但是几个小时后,我看到了我的错误。是的,我正在指定方法。但是就在我打电话给 client.Get(request)之后;这将方法更改为GET。 因此,使用POST请求的正确方法如下:

var client = new RestClient("https://someservice.com");
var request = new RestRequest("/token/", DataFormat.Json).AddJsonBody(SomeObject);
var response = client.Post(request);