【问题标题】:HttpClient - getting incorrect page sourceHttpClient - 获取不正确的页面源
【发布时间】:2010-01-23 16:23:36
【问题描述】:

我用HttpClientGetMethod获取了URL的页面源:

http://www.google.com/finance?chdnp=1&chdd=1&chds=1&chdv=1&chvs=Logarithmic&chdeh=0&chdet=1264263288788&chddm=391&chddi=120&chls=Ohlc&q=NSE:.NSEI&

但不知何故,我总是最终得到以下页面来源:

http://www.google.com/finance?q=NSE:.NSEI

谁能告诉我为什么以及如何获取原网址的页面来源?

【问题讨论】:

  • 发布您的代码,以便我们了解您在做什么。

标签: httpclient


【解决方案1】:

我将在这里冒险并假设正在发生的事情是您的 HttpClient 实现在内部处理 HTTP 重定向,因此当您在第一个 URL 上调用 GetMethod 时,服务器 (google.com) 是可能会为您最终返回的第二个 URL 发回 HTTP 重定向(302 或 301)响应。

原因可能是第一个 URL 需要某种 cookie,而您在提出请求时并未提供这种 cookie。准确确定以这种方式发出请求时会发生什么的最佳方法是使用诸如WireSharkFiddler 之类的工具来分析来自 HttpClient 的 HTTP 请求/响应序列以及使用 FireFox 或IE 看看到底有什么不同。

【讨论】:

  • 我不这么认为。我使用curl -i "http://www.google.com/finance?chdnp=1&chdd=1&chds=1&chdv=1&chvs=Logarithmic&chdeh=0&chdet=1264263288788&chddm=391&chddi=120&chls=Ohlc&q=NSE:.NSEI&" 在命令行上检查了他的网址,它返回了HTTP/1.1 200 OK 响应。
  • 好吧,检查过了。但是,根据他使用的平台或 HttpClient 发出请求的方式,服务器可能会以不同的响应进行响应。问题是他需要自己进行测试,使用同一台计算机(假设它是一台计算机)并使用我建议的工具之一确定 HttpClient 请求和另一个客户端的请求之间的区别。答案很可能在于 HTTP 流量(错误的标头、丢失的 cookie 等)
  • D:我的测试请求根本没有设置任何 cookie。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-09
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 2015-05-06
  • 2016-03-21
相关资源
最近更新 更多