查询字符串被忽略
Querystring being ignored
我正在编写一个接口来从服务中抓取信息。 link 需要登录,所以我保留了 cookie 的副本,然后尝试遍历页面以获取我们用户的统计信息。
要点击的网址格式为:https://domain.com/groups/members/1234
对于第一页,每个后续页面都会附加 ?page=X
string vUrl = "https://domain.com/groups/members/1234";
if (pageNumber > 1) vUrl += "?page=" + (pageNumber).ToString();
HttpWebRequest groupsRequest = (HttpWebRequest)WebRequest.Create(vUrl);
groupsRequest.CookieContainer = new CookieContainer();
groupsRequest.CookieContainer.Add(cookies); //recover cookies First request
groupsRequest.Method = WebRequestMethods.Http.Get;
groupsRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36";
groupsRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
groupsRequest.UseDefaultCredentials = true;
groupsRequest.AutomaticDecompression = DecompressionMethods.GZip;
groupsRequest.Headers.Add("Accept-Language", "en-US,en;q=0.8");
groupsRequest.Headers.Add("Cache-Control", "max-age=0");
HttpWebResponse getResponse = (HttpWebResponse)groupsRequest.GetResponse();
这对第一页工作正常,我得到了我需要的数据,但在随后的每次传递中,queryString 都被忽略了。最后一行调试显示请求的RequestUri.Query是正确的,但是响应RequestUri.Query是空白的。所以它具有始终返回第1页数据的效果。
我试图模仿在 Chrome 中通过 Inspect 看到的请求 headers,但我卡住了。帮忙?
当您将失败的 url 放入浏览器时,它是否有效?因为它是 GET,所以浏览器应该发出相同的请求并告诉您它是否有效。如果它在浏览器中不起作用,那么您可能缺少查询字符串以外的内容?
如果它确实有效,那么可以使用 fiddler 并准确找出正在发送的 headers、cookie 和查询字符串值,以 100% 确保您发送的请求正确。可能是查询字符串的信息不足,无法从您发送的请求中获取所需的数据。
如果仍然无法获取,则在通过浏览器发送请求时对请求进行 fiddler,然后使用 this fiddler extension 将请求转换为代码并查看发生了什么。
我正在编写一个接口来从服务中抓取信息。 link 需要登录,所以我保留了 cookie 的副本,然后尝试遍历页面以获取我们用户的统计信息。
要点击的网址格式为:https://domain.com/groups/members/1234 对于第一页,每个后续页面都会附加 ?page=X
string vUrl = "https://domain.com/groups/members/1234";
if (pageNumber > 1) vUrl += "?page=" + (pageNumber).ToString();
HttpWebRequest groupsRequest = (HttpWebRequest)WebRequest.Create(vUrl);
groupsRequest.CookieContainer = new CookieContainer();
groupsRequest.CookieContainer.Add(cookies); //recover cookies First request
groupsRequest.Method = WebRequestMethods.Http.Get;
groupsRequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36";
groupsRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
groupsRequest.UseDefaultCredentials = true;
groupsRequest.AutomaticDecompression = DecompressionMethods.GZip;
groupsRequest.Headers.Add("Accept-Language", "en-US,en;q=0.8");
groupsRequest.Headers.Add("Cache-Control", "max-age=0");
HttpWebResponse getResponse = (HttpWebResponse)groupsRequest.GetResponse();
这对第一页工作正常,我得到了我需要的数据,但在随后的每次传递中,queryString 都被忽略了。最后一行调试显示请求的RequestUri.Query是正确的,但是响应RequestUri.Query是空白的。所以它具有始终返回第1页数据的效果。
我试图模仿在 Chrome 中通过 Inspect 看到的请求 headers,但我卡住了。帮忙?
当您将失败的 url 放入浏览器时,它是否有效?因为它是 GET,所以浏览器应该发出相同的请求并告诉您它是否有效。如果它在浏览器中不起作用,那么您可能缺少查询字符串以外的内容?
如果它确实有效,那么可以使用 fiddler 并准确找出正在发送的 headers、cookie 和查询字符串值,以 100% 确保您发送的请求正确。可能是查询字符串的信息不足,无法从您发送的请求中获取所需的数据。
如果仍然无法获取,则在通过浏览器发送请求时对请求进行 fiddler,然后使用 this fiddler extension 将请求转换为代码并查看发生了什么。