2013-11-26 14 views
0

目前我無法使用C#成功調用API。我附上了一個用Chrome PostMan成功創建的屏幕截圖,儘管我無法用C#複製它。他是我迄今爲止失敗的嘗試。我從服務器得到的迴應如下。任何人都可以看到我做錯了什麼?
非常感謝, 詹姆斯發送xml數據時無法成功調用web api

代碼段

const string xml = "<Envelope><Body> <AddRecipient>..."; 
var req = (HttpWebRequest)WebRequest.Create(ApiUrl); 
    var requestBytes = System.Text.Encoding.ASCII.GetBytes(xml); 
req.Method = "POST"; 
req.Headers.Add("Authorization", "Bearer " + token); 
req.ContentType = "application/x-www-form-urlencoded"; 
req.ContentLength = requestBytes.Length; 
var requestStream = req.GetRequestStream(); 
requestStream.Write(requestBytes, 0, requestBytes.Length); 
requestStream.Close(); 
var res = (HttpWebResponse)req.GetResponse(); // Call API 
var sr = new StreamReader(res.GetResponseStream(), System.Text.Encoding.Default); 
var backstr = sr.ReadToEnd(); 
sr.Close(); 
res.Close(); 

Chrome的郵差

enter image description here

響應來自API回

<Envelope><Body><RESULT><SUCCESS>false</SUCCESS></RESULT><Fault><Request/><FaultCode/><FaultString>Server Error</FaultString><detail><error><errorid>50</errorid><module/><class>SP.API</class><method/></error></detail></Fault></Body></Envelope> 
+0

我敢打賭,你有一些關於50意味着什麼錯誤的文檔。 +您正在使用示例xml。我沒有看到你的PostMan示例。 –

+0

我更新了代碼片段。 C#嘗試使用的是我在PostMan中使用的xml。 –

+0

有什麼想法?非常感謝 –

回答

0

是否有關於什麼錯誤50的文檔?可能只是一個壞嬰兒車?如果不是,我建議下載fiddler。然後,您可以正確比較PostMan和您的應用程序的請求,以查看實際差異。

+0

錯誤代碼表示(取自文檔):50 服務器錯誤(通常在API請求調用不正確時返回,例如請求中沒有XML傳遞) –

+0

像我說的嘗試Fiddler。這可能是API需要額外的頭文件(如用戶代理),沒有它你會得到一個錯誤。提琴手會告訴你關於請求/響應的一切。 – pingoo

相關問題