C# 查询字符串被忽略

C# 查询字符串被忽略,c#,get,httpwebrequest,query-string,C#,Get,Httpwebrequest,Query String,我正在编写一个从服务中获取信息的接口。该链接位于登录之后,因此我保留了一份cookie副本,然后尝试在页面中循环以获取用户的统计信息 要点击的URL的格式如下: 对于第一页,以及随后的每一页附加?page=X string vUrl = "https://domain.com/groups/members/1234"; if (pageNumber > 1) vUrl += "?page=" + (pageNumber).ToString(); HttpWebRequest groupsR

我正在编写一个从服务中获取信息的接口。该链接位于登录之后,因此我保留了一份cookie副本,然后尝试在页面中循环以获取用户的统计信息

要点击的URL的格式如下: 对于第一页,以及随后的每一页附加?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();
这在第一个页面上运行良好,我得到了所需的数据,但在随后的每次传递中,查询字符串都会被忽略。最后一行的调试显示请求的RequestUri.Query是正确的,但响应RequestUri.Query是空的。因此,它具有始终返回第1页数据的效果


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

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


如果您仍然无法获取请求,则在通过浏览器发送请求时对其进行小提琴处理,然后使用将请求转换为代码并查看结果。

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


如果您仍然无法获取请求,则在通过浏览器发送请求时对其进行微调,然后使用将请求转换为代码,然后查看结果。

如何增加pageNumber?它将作为int传递到方法中,因此,递增由调用例程处理。如何递增pageNumber?它作为int传递到方法中,因此递增由调用例程处理。是的,它在浏览器中工作。我还没有深入研究提琴手,我会看看能不能从那里找到些什么。打得好。我编辑了我的回复,以包含其他内容,如果所有其他内容都失败了,您可以尝试其他内容。有一个fiddler插件,你可以用它把请求转换成实际的代码!除了忽略我捕获的cookies并再次显式创建它们之外,没有什么明显的。谢谢你的提示,代码创建者太-真的很容易。如果其他人遇到这种情况,我只是将Fiddler会话拖到“代码”选项卡上,然后将所有HttpWebRequest生成代码复制到我的应用程序中。谢谢杰罗德!不客气。是的,伙计。我无法告诉你我在类似问题上浪费了多少天。是的,它在浏览器中工作。我还没有深入研究提琴手,我会看看能不能从那里找到些什么。打得好。我编辑了我的回复,以包含其他内容,如果所有其他内容都失败了,您可以尝试其他内容。有一个fiddler插件,你可以用它把请求转换成实际的代码!除了忽略我捕获的cookies并再次显式创建它们之外,没有什么明显的。谢谢你的提示,代码创建者太-真的很容易。如果其他人遇到这种情况,我只是将Fiddler会话拖到“代码”选项卡上,然后将所有HttpWebRequest生成代码复制到我的应用程序中。谢谢杰罗德!不客气。是的,伙计。我不能告诉你我在类似的问题上浪费了多少天。