我正在使用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
为什么会发生这种情况?
答案 0 :(得分:0)
将您的ParameterType参数更改为 GetOrPost ,它将起作用
request.AddParameter("par1", val, RestSharp.ParameterType.GetOrPost);
request.AddParameter("par2", val, RestSharp.ParameterType.GetOrPost);
答案 1 :(得分:0)
使用JSON将请求初始化为POST。
var client = new RestClient(PreUri);
var request = new RestRequest(Uri,Method.POST){RequestFormat = DataFormat.Json};
在正文中添加对象
request.AddBody(OBJ);
<强>执行强>
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);