在c#中将其转换为HTTP POST

本文关键字:HTTP POST 转换 | 更新日期: 2023-09-27 18:02:39

我目前正在试验HTTP请求。我已经成功地做了get请求,我已经阅读了用HTTP请求做post请求。现在我正在尝试使用雅虎API,为了使用雅虎API,它声明在

消息管理API可用于向另一个消息发送消息雅虎信使联系。该API使用起来非常简单,如下所示在这里。请注意,发送消息的联系人是URI,使用以下格式:<server>/v1/message/<network>/<contactID>

POST /v1/message/yahoo/targetYahooId?sid=msgrsessionid  
Host: rcore1.messenger.yahooapis.com  
Authorization: < Standard OAuth credentials >  
Content-Type: application/json;charset=utf-8  
Content-Length: 25  
{  
    "message" : "Hey there"  
}  

现在我有一个OAuth字符串,我使用HttpWebRequest对象从get获得。字符串是这样的

oauth_token=A%3Dvh....aRg--&oauth_token_secret=bd46a....c9239&oauth_expires_in=3600&oauth_session_handle=ALtT.....3J1N4Zg--&oauth_authorization_expires_in=784964948&xoauth_yahoo_guid=TUSKED5...NCIA

现在我的问题如下:

1-如果我在c#中使用WebRequest对象,我的URI会是什么样子

2-我知道它需要一个JSON类型的对象。我怎么知道OAuth参数是什么?

在c#中将其转换为HTTP POST

你需要改变的是内容类型:

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

当然还有url

您需要更改其中包含url的行

你需要改变内容类型行

您需要将有效负载转换为json字符串,然后将其转换为字节数组(在示例中为byteArray)

手工组装json "{foo:'bar'}"等或使用json.net

并设置content-length

看起来它期待一个JSON对象的请求体。根据所使用的。net版本,您可以使用Javascript序列化器(https://stackoverflow.com/a/7003815/939080)或JSON。. NET (http://james.newtonking.com/projects/json-net.aspx)将表单集合转换为JSON输出。

你在问一个开放式的问题,如果你想要一个具体而完整的答案,需要别人为你写一堆代码。正如其他人指出的,有几个问题需要处理:

  • JSON有效负载,这将是一个简单的问题,通过代码示例中使用的byteArray将JSON字符串放在请求体中。
  • 内容类型,您需要按照jrumell的描述进行更改。
  • OAuth凭证,这是一壶鱼,你需要阅读,理解,并获得一个库。这里是寻找图书馆的好地方。