【发布时间】:2015-04-19 05:47:13
【问题描述】:
我目前在尝试调用 API 时遇到 HttpWebRequest/Response 问题。
API 使用 JSON/Ajax 进行调用,但我需要通过我不完全理解的 HttpWebRequest/Response 进行调用,并且我认为我传递了错误的访问令牌。
这是我从教程中获得的当前代码:
byte[] buffer = Encoding.ASCII.GetBytes("username=User&password=Password");
HttpWebRequest WebReq =(HttpWebRequest)WebRequest.Create("http://api40.maildirect.se/User/Authorize");
WebReq.Method = "POST";
WebReq.ContentType = "application/x-www-form-urlencoded";
WebReq.ContentLength = buffer.Length;
Stream PostData = WebReq.GetRequestStream();
PostData.Write(buffer, 0, buffer.Length);
PostData.Close();
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
var status = WebResp.StatusCode; (returns OK)
Stream _Answer = WebResp.GetResponseStream();
StreamReader Answer = new StreamReader(_Answer);
//Here I try to make another request, do I need to make another instance?
WebReq = (HttpWebRequest)WebRequest.Create("http://api40.maildirect.se/Contacts?&select=ContactId,FirstName,LastName");
WebReq.Method = "GET";
WebReq.ContentType = "text/json; charset=utf-8";
WebReq.Headers.Add("Authorization", Answer.ReadToEnd());
HttpWebResponse WebResp2 = (HttpWebResponse)WebReq.GetResponse();
^ This is where it breaks because I'm not authorized.
API 中唯一有用的文档是我在进行其他调用时需要传递访问令牌,但我怀疑我传递了错误的令牌。
提前致谢
去性
【问题讨论】:
-
WebResp.StatusCode返回状态 200 并不一定意味着您的身份验证成功。您需要检查响应内容。 -
我可以访问 CanRead,还有什么需要的吗?
-
Answer中已经有流,里面有什么? -
我可以访问 CanRead 和 CanTimeout,但长度和位置会引发 System.NotSupportedException。但是,base 中的 identity 和 _identity 是 null,但我不是很有经验,所以我不知道这是否重要。
标签: c# api httpwebrequest token httpwebresponse