【发布时间】:2019-01-31 14:55:16
【问题描述】:
我有一个将登录凭据传递给 API 的 POST 方法。登录成功后,我需要执行一个 GET 方法来检索一些数据。
var httpWebRequest = (HttpWebRequest)WebRequest.Create("https://url");
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = new JavaScriptSerializer().Serialize(new
{
login = "myLogin",
password = "myPassword"
});
streamWriter.Write(json);
}
//Do I implement the GET request right here? Any advice is appreciated.
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
Response.Write(result);
}
【问题讨论】:
-
您应该先处理对第一个请求的响应,然后再尝试第二个请求。
-
这是一个单独的请求。你不能在同一个
httpWebRequest上搭载东西。登录通常通过向客户端发送回一个包含会话数据的 cookie 来实现,这些会话数据需要在每个后续请求中提供,因此您可能需要检索它并在后续请求中提供它,否则GET仍然会失败。 -
我不知道您要查询的 API,但您至少要等待 POST 的响应,然后再执行 GET。您可能还必须考虑登录调用可能返回的 cookie 或 sessionid(取决于 API)
-
感谢您的帮助!我是这个 api 编程的新手。