【发布时间】:2018-11-12 04:44:20
【问题描述】:
我正在尝试通过向 url 发出 post web 请求来获取请求身份验证令牌。 api 需要用户名/密码作为 form-data 有效负载中的凭据。
当我点击浏览器上的登录选项时,网络日志显示GET 请求以HTML 作为响应,然后是POST 请求,该请求返回带有用户名/密码和请求令牌的表单数据在有效载荷中。
尝试使用webrequest 模拟流程,我正在做一个简单的post 请求,如下所示:
public string HttpPost(string url, string post, string refer = "")
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
// request.CookieContainer = cJar;
request.UserAgent = UserAgent;
request.KeepAlive = false;
request.Method = "POST";
request.Referer = refer;
byte[] postBytes = Encoding.ASCII.GetBytes(post);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream());
return sr.ReadToEnd();
}
但是,这个请求只返回页面的文本/HTML 标记,就像浏览器请求的第一部分一样。如何让它运行后续的POST 以从端点获取令牌?
编辑 1:
这是第一个GET请求:
【问题讨论】:
-
使用fiddler,你能把相关请求的日志贴在这里吗?请求和响应。如果它返回 html 而不是 json 或 xml,则初始 get 请求似乎无关紧要
-
似乎在 mac os 上运行 fiddler 是一个痛苦的** .. 在 Sierra 10.13.1 上运行,是否有任何其他解决方法可以适应这个?难道是它在后台使用了一些重定向 url 机制?还是第一个 GET 是对 cookie 的请求?哪个用于下一个 POST 请求?
-
更新了问题以包含第一个 GET 请求的响应..
标签: c# security oauth jwt token