一些HTTP请求不会出现在Fiddler中

时间:2012-11-29 20:58:32

标签: java asp-classic fiddler

我正在重写用于从Java访问Web商店的API到经典ASP的示例代码。 Java代码有效,它发送请求并返回正确的结果。 ASP代码完全相同,但它只是返回一个错误,授权有问题。我检查了hmac签名字符串(sha256,base64),但这给出了与Java代码相同的结果。

然后我决定检查HTTP请求的实际外观,并将它们相互比较。 Fiddler似乎是一个不错的选择,但出于某种原因,两个HTTP请求都没有显示出来。

关于这个问题已经写了很多,我尝试了几件事,但到目前为止还没有运气。它们都描述了通过Fiddler代理路由请求,即localhost:8888。

我在ASP代码中使用此对象:

Set httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")

对于IIS 7(在Windows 7上),可以在DOS中设置代理,如下所示:

netsh winhttp set proxy localhost:8888

在这样的代码中(这可能不适用于其他版本的“MSXML2.ServerXMLHTTP”而不是v6):

httpRequest.setProxy 2, "http=localhost:8888", ""

Java代码使用Apache HttpClient,根据manual代理可以这样设置:

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("localhost", 8888);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

我在main()方法的开头添加了这段代码。代码在Eclipse(Juno)中运行。

我还在浏览器中打开了代理地址(http:// localhost:8888 /),它向我显示了“Fiddler Echo Service”页面。 Fiddler将设置为显示“所有进程”。

但是,两个HTTP请求都没有显示出来。唯一能显示的是我运行的ASP页面(http:// localhost:8082 / test.asp)执行HTTP请求。当我使用我的浏览器时,其他东西出现在Fiddler上,所以我知道它正在工作。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我原本以为,因为Fiddler没有出现这两个节目,Fiddler出了点问题。

但这两个项目都出了问题。对于ASP代码,setProxy必须像这样调用:

xmlhttp.setProxy 2, "http://127.0.0.1:8888", ""

所以“:: /”而不是“=”

在Fiddler中显示的Java代码中的Apache HttpClient请求非常复杂,因为请求是使用https协议发送的。虽然我尝试了几种提议的解决方案,但我无法让它发挥作用。

最后我发现添加了

-Djavax.net.debug=all

作为VM的参数向我展示了我需要的东西,即正在发送的标题。