我正在使用DotNetOpenAuth并尝试将JSON对象发布到服务器。

服务器抛出WebContentType = Raw错误。

Authorization: OAuth
oauth_token="V9vVXD51ehUU6WmY%2FQ41qta0RfY%3D",oauth_consumer_key="CHiawRiAb299cOas",oauth_nonce="BBTM4csg",oauth_signature_method="HMAC-SHA1",oauth_signature="KZJZvT630f2KenB9l9tqSLI%2FfHA%3D",oauth_version="1.0",oauth_timestamp="1306870331"
Content-Type: application/x-www-form-urlencoded; charset=utf-8
User-Agent: DotNetOpenAuth/3.4.6.10357


我想我真的在寻找有关如何执行此操作的示例?还是样品的网址?

我目前正在尝试

WebRequest httpRequest = consumer.
    PrepareAuthorizedRequest(endpoint, AccessToken, para);
httpRequest.ContentType = "application/json";
WebResponse webResponse = httpRequest.GetResponse();

最佳答案

最初answered by iain

好吧,我设法解决了这个问题。我发现的问题是我正在从PrepareAuthorizedRequest调用ConsumerBase。然后,此后将不接受内容类型,并且始终将其标记为x-www-form-urlencoded。为解决此问题,我正常调用了PrepareAuthorizedRequest,然后创建了一个新的HttpWebRequest并跨OAuth Authorization标头复制。

HttpWebRequest httpRequest = consumer.
    PrepareAuthorizedRequest(endpoint, AccessToken);

HttpWebRequest httpWebRequest = (HttpWebRequest)
    WebRequest.Create(serviceBase + "/Edit/6363241");

foreach (string headerKey in httpRequest.Headers.AllKeys)
    httpWebRequest.Headers.Add(headerKey, httpRequest.Headers[headerKey]);


httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";

using (Stream requestStream = httpWebRequest.GetRequestStream())
{
    byte[] bytes = Encoding.UTF8.GetBytes(test22);
    requestStream.Write(bytes, 0, bytes.Length);
}

WebResponse webResponse = httpWebRequest.GetResponse();

string responseContent = new StreamReader(webResponse.GetResponseStream()).
    ReadToEnd();

10-07 13:15
查看更多