2011-06-12 88 views
5
 
HttpWebRequest request = (HttpWebRequest) HttpWebRequest.Create(url); 
request.Method = "POST"; 
request.ContentType = "application/x-www-form-urlencoded; charset=utf-8"; 

POST數據是發送(i檢查使用招)返回從Yahoo:HttpWebRequest,如何使用應用程序/ JSON內容類型發送POST數據?

{ 「錯誤」:{ 「代碼」: - 1003, 「細節」: 「不支持的內容類型錯誤」,「描述「:」不支持的內容類型錯誤「},」code「: - 1003}

我正在寫雅虎Messanger客戶端,需要application/json;字符集= UTF-8作爲內容類型,並且當我設置:

{ 「錯誤」:{ 「代碼」:

 
request.ContentType = "application/json; charset=utf-8"; 

沒有POST數據發送,從Yahoo返回 - 1005」細節 「:」 無效參數錯誤」, 「描述」: 「無效參數錯誤」}, 「代碼」: - 1005}

UPDATE

我嘗試通過POST方法來發送這2個值:presenceState & status

Yahoo Messager IM API指出支持內容類型應用/ JSON。 而在我的代碼中,如果我設置內容類型應用程序/ json,HttpWebRequest未通過POST發送這兩個值。

+0

您確定請求不會從您的客戶端發出,但在服務器上失敗嗎? – 2011-06-12 23:59:23

+0

使用Fiddler,從我的第一個代碼雅虎服務器返回此JSON結果:{「error」:{「code」: - 1003,「detail」:「不支持的內容類型錯誤」,「description」:「不支持的內容類型錯誤」} 「代碼」: - 1003}。 和響應代碼400(錯誤的請求)。 – F8R 2011-06-13 00:20:52

回答

0

根據您的錯誤,第一個失敗,因爲請求的內容類型不符合雅虎期望的內容類型。這是有道理的,你的第二個例子是走向正確的道路,但根據你的發佈,似乎你得到了迴應。隨着提琴手,你應該能夠比較你的帖子和通過網站的正確請求。這可能有助於查明哪裏出錯。

但是無論我們需要多看一些你正在做的事情,因爲沒有什麼東西顯示你的帖子的內容供我們審閱。

+0

感謝您的回放,我編輯了我的問題,並添加了更多信息我在做什麼。 – F8R 2011-06-13 06:03:15

0

我的錯誤也許是你的錯誤。通過將presenceState更改爲int類型而不是字符串類型來解決問題。

ClassLogon objLogon = new ClassLogon 
    { 
    presenceState = ***0***, 
    presenceMessage = "I am logn" 
    }; 

我希望你能解決這個問題。

+0

感謝您的重播,您是否使用HttpWebRequest以及您使用的設置? 你能分享你的代碼嗎? – F8R 2011-06-24 22:31:08

1

就以下面的例子

byte[] data = CreateData(value); 
var requst = (HttpWebRequest) WebRequest.Create(uri); 
requst.Method = "POST"; 
requst.ContentType = "application/json"; 
requst.ContentLength = data.Length; 
using (Stream stream = requst.GetRequestStream()) 
{ 
    stream.Write(data, 0, data.Length); 
} 

看看哪裏CreateData是

public static byte[] Create<T>(T value) 
{ 
    var serializer = new DataContractJsonSerializer(typeof (T)); 
    using (var stream = new MemoryStream()) 
    { 
     serializer.WriteObject(stream, value); 
     return stream.ToArray(); 
    } 
} 
0

我是完全一樣的問題掙扎。 正如文檔(http://developer.yahoo.com/messenger/guide/ch01s04.html)中所述,您需要在POST請求中有一個空的正文({})。

使用JavaScript & jQuery的,我在POST體發送一個簡單的空對象的字符串,而工作:

$.ajax({ 
     type: 'POST', 
     url: 'http://developer.messenger.yahooapis.com/v1/session', 
     data: JSON.stringify({ }), 
     processData: false, 
     beforeSend: function(xhr) { 
      xhr.setRequestHeader('Authorization', OAuth.getAuthorizationHeader("yahooapis.com", message.parameters)); 
      xhr.setRequestHeader('Content-Type','application/json; charset=UTF-8'); 
      xhr.setRequestHeader('X-Yahoo-Msgr-User-Agent','YahooMessenger/1.0 (yourapp; 1.0.0.1)') 
     }}); 

希望幫助。

相關問題