当Postman工作正常时,HttpClient返回Bad Request

时间:2017-03-13 07:33:32

标签: c# post dotnet-httpclient

我看过一个非常相似的问题here(" httpclient-postasync-posting-null-content")。在我的例子中,我在构造函数中创建了HttpClient的实例:

_client = new HttpClient();

后来在我的一种方法中,我这样做:

_client.DefaultRequestHeaders.Accept.Clear();
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var content = new StringContent("", Encoding.UTF8, "application/json");

string targetUrl = //the url
var httpResponse = await _client.PostAsync(targetUrl,content);

基本上就是这样。其中一个问题是,如果我离开这一行,请求无效:

var httpResponse = await _client.PostAsync(targetUrl,content);

它实际上永远挂起。所以为了找出发生了什么,我做了这个改变:

var httpResponse = _client.PostAsync(targetUrl, content).Result;

其中只会返回结果但Bad Request。然而,从Postman执行的相同请求工作得很好。

同样形成我上面已经链接的问题我开始觉得这可能与string类型有某种关联,并且当您尝试发送{时,某些特定情况在string请求中{1}}。星期五我想当我尝试发送一些简单的字符串POST"23423-32432-sfg-43324"时,我遇到了类似的问题。再次,它不起作用,但RestSharp做得很好。

我的假设是Postman在实际发布之前对Postman进行了一些修改,但无论如何。有人可以在这里帮助我并最终解释为什么会发生这种情况 - 同样的请求是从string起作用但在代码中失败了吗?

修改

添加此行可修复它:

Postman

不确定这是特定的还是更常见的问题。可以留下它以防其他人遇到同样的问题。

0 个答案:

没有答案