2012-07-13 31 views
0

我遇到了一個問題,我嘗試從C#應用程序與Ruby API進行通信。C#HttpWebRequest POST => !!處理請求時出現意外錯誤:無效%-encoding

我需要POST一些JSON數據,參數名稱爲「data」,但API返回給我:'!處理請求時出現意外錯誤:%%-encoding'無效。

我嘗試將Content-Type設置爲'application/json'和'application/x-www-form-urlencoded;字符集= UTF-8' 。

我的POST數據看起來像這樣'data = some_json_string'。

我想我應該逃避json字符串,所以如果這是我的問題,如何使用.NET而不使用第三方庫?

代碼:

 byte[] data = System.Text.ASCIIEncoding.UTF8.GetBytes(sdata); 

     HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url, UriKind.Absolute)); 

     request.Method = "POST"; 
     request.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; 
     request.ContentLength = data.Length; 

     Stream reqStream = request.GetRequestStream(); 

     // Send the data. 
     reqStream.Write(data, 0, data.Length); 
     reqStream.Close(); 

提前感謝!

+0

請您可以發佈完整的C#代碼 – Phil 2012-07-13 19:05:04

回答

0

。假定該字符串SDATA進來已經是JSON格式,你可以這樣做:

using (WebClient wc = new WebClient()) 
{ 
    string uri = "http://www.somewhere.com/somemethod"; 
    string parameters = "data=" + Uri.EscapeDataString(sdata); 
    wc.Headers["Content-type"] = "application/x-www-form-urlencoded"; 
    string result = wc.UploadString(uri, parameters); 
} 

根據不同的消費服務,可能需要在內容類型設置爲application/JSON?

+0

謝謝,現在就試試吧! – SlashJ 2012-07-13 19:14:07

相關問題