【问题标题】:Querystring being ignored查询字符串被忽略
【发布时间】:2016-01-25 19:40:14
【问题描述】:

我正在编写一个接口来从服务中获取信息。该链接位于登录后,因此我保留了 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 是空白的。所以有一直返回page 1数据的效果。

我试图模仿通过 Chrome 中的 Inspect 看到的请求标头,但我被卡住了。帮忙?

【问题讨论】:

  • 如何增加 pageNumber ?
  • 它作为 int 传递给方法,因此由调用例程处理递增。

标签: c# get httpwebrequest query-string


【解决方案1】:

当您将失败的 url 放入浏览器时,它会起作用吗?因为它是 GET,所以浏览器应该发出相同的请求并告诉您它是否正常工作。如果它在浏览器中不起作用,那么除了查询字符串之外,您可能还遗漏了什么?
如果它确实有效,那么可以使用 fiddler 并准确找出正在发送的标头、cookie 和查询字符串值,以确保 100% 确保您发送的是正确的请求。可能是查询字符串的信息不足,无法从您发送的请求中获取您需要的数据。

如果你仍然不能得到它,那么当你通过浏览器发送请求时,请先处理请求,然后使用this fiddler extension 将请求转换为代码,看看会发生什么。

【讨论】:

  • 是的,它可以在浏览器中运行。我还没有研究 Fiddler - 我会看看我是否可以从那里拉出一些东西。
  • 好电话。我编辑了我的回复以包含其他内容,如果所有其他方法都失败了,您可以尝试。有一个提琴手插件,您可以使用该插件将该请求转换为实际代码。
  • 嗯 - 做到了!除了忽略我捕获的 cookie 并再次明确创建它们之外,没有什么明显的。也感谢该代码创建者的提示 - 真的很容易。如果其他人遇到这种情况,我只是将我的 Fiddler 会话拖到代码选项卡上,然后将所有 HttpWebRequest 生成代码复制到我的应用程序中。谢谢杰罗德!
  • 不客气。是的,伙计。我无法告诉你我在类似的问题上花了多少天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
相关资源
最近更新 更多