chr*_*ris 17 .net twitter http webrequest
使用WebRequest发送POST时,即使我手动设置了标头并将PreAuthenticate设置为true,也不会随请求一起发送Authorization标头,例如:
webRequest.Headers["Authorization"] = "OAuth oauth_consumer_key=bFPD...";
webRequest.PreAuthenticate = true;
Run Code Online (Sandbox Code Playgroud)
使用Fiddler我可以看到没有发送Authorization标头.目标站点(Twitter)返回400(错误请求)而不是401(未授权),因此WebRequest发送授权数据所需的错误挑战.有关信息,返回的内容是:
{"errors":[{"message":"Bad Authentication data","code":215}]}
Run Code Online (Sandbox Code Playgroud)
那么,我该如何解决这个问题呢?如何强制WebRequest在初始请求时发送授权?请注意,授权数据不是基本身份验证,而是OAuth字符串.
谢谢
小智 31
这是我的解决方案.该值在变量json中.
var myUri = new Uri(fullpath);
var myWebRequest = WebRequest.Create(myUri);
var myHttpWebRequest = (HttpWebRequest)myWebRequest;
myHttpWebRequest.PreAuthenticate = true;
myHttpWebRequest.Headers.Add("Authorization", "Bearer " + AccessToken);
myHttpWebRequest.Accept = "application/json";
var myWebResponse = myWebRequest.GetResponse();
var responseStream = myWebResponse.GetResponseStream();
if (responseStream == null) return null;
var myStreamReader = new StreamReader(responseStream, Encoding.Default);
var json = myStreamReader.ReadToEnd();
responseStream.Close();
myWebResponse.Close();
Run Code Online (Sandbox Code Playgroud)
小智 3
尝试此操作,但授权标头之间不应有空格。
var authHeader = "OAuth oauth_consumer_key=bFPD...";
webRequest.Headers.Add("Authorization", authHeader);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66489 次 |
| 最近记录: |