我正在尝试将带有正文的POST请求发送到WordPress API。我仍然收到401错误。
我决定使用:https://gist.github.com/DeskSupport/2951522通过OAuth 1.0进行授权,它与GET方法完美配合。然后我想实现另一种发送简单正文的方法。
那是我的代码:
var oauth = new OAuth.Manager();
oauth["consumer_key"] = _consumerKey;
oauth["consumer_secret"] = _consumerSecret;
oauth["token"] = _accessToken;
oauth["token_secret"] = _tokenSecret;
var appUrl = _baseUrl + url;
var authzHeader = oauth.GenerateAuthzHeader(appUrl, "POST");
string body = GenerateBody(parameters);
byte[] encodedData = Encoding.ASCII.GetBytes(body);
var request = (HttpWebRequest)WebRequest.Create(appUrl);
request.Method = "POST";
request.PreAuthenticate = true;
request.AllowWriteStreamBuffering = true;
request.Headers.Add("Authorization", authzHeader);
request.ContentLength = encodedData.Length;
request.ContentType = "application/x-www-form-urlencoded";
Stream newStream = request.GetRequestStream();
newStream.Write(encodedData, 0, encodedData.Length);
using (var response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
}
}
GenerateBody方法的结果为user_login=login&user_pass=BXE&04K44DoR1*a
我还尝试将'&'字符更改为'%26',但是它不起作用。
此请求通过邮递员运行,我不知道这是怎么回事。
答案 0 :(得分:0)
好的,我找到了解决方案。
https://blog.dantup.com/2016/07/simplest-csharp-code-to-post-a-tweet-using-oauth/
这个人写下了提出此请求的方式。同样重要的是,您必须为唯一令牌更改oauth_nonce。