2017-12-18 181 views
0

我在尝试请求API时总是收到此错误。 有关API的一些细节:该方法是POST和参数是正确的,太(当我尝试它的邮递员,没有问题)向API发送POST请求时发生错误(无法使用此谓词类型发送正文)

这里是我的代码:

JavaScriptSerializer js = new JavaScriptSerializer(); 
using (WebClient client = new WebClient()) 
{ 
    foreach (var ad in documents) 
    { 

     var doc = js.Serialize(ad); 
     var json = "{\"Message\":\"" + doc + "\"}"; 

     var response = 
      client.UploadValues("apiUrl", new NameValueCollection() 
      { 
       {"json", json} 
      }); 
    } 
} 

,我读了UploadValues是POST默认。此代码在简单的控制台应用程序中调用。任何想法,为什么我得到这个错误?

+2

两个'WebClient'和'JavaScriptSerializer'大多过时,你应该使用'HttpClient'用'NewtonSoft.Json' –

+1

'VAR的json =“{ \“Message \”:\“”+ doc +“\”}“;'唷。为什么用手建造它?这只是要求不可捕捉的语法错误。你已经在使用一个序列化器(虽然是过时的)和一个NameValueCollection,那么为什么在中间会随机创建一个字符串呢?无论如何,如果它在Postman中工作,但不是这样,你应该做的第一件事就是使用一个像Fiddler这样的工具来拦截这两个请求,然后发挥两个不同软件产生的实际HTTP请求之间的差异。 – ADyson

+0

感谢您的意见,它正在使用此代码! – Jydai

回答

2

这里是一个代码块的工作:

var doc = JsonConvert.SerializeObject(message);  
var stringContent = new StringContent(
     message, 
     UnicodeEncoding.UTF8, 
     "application/json"); 

HttpClient client = new HttpClient();     

client.PostAsync("apiUrl", stringContent);