2017-12-18 245 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); 
相關問題