我正在使用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();