2011-06-12 85 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)') 
     }}); 

希望帮助。

相关问题