有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在将访问web商店API的示例代码从Java重写为经典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

在这样的代码中(这在除v6之外的其他版本的“MSXML2.ServerXMLHTTP”中可能不起作用):

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

Java代码使用ApacheHttpClient,根据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服务”页面。Fiddler设置为显示“所有进程”

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

有人有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

    我最初认为,因为这两个程序在Fiddler上都没有显示,所以Fiddler出了问题

    但这两个项目都有问题。对于ASP代码,setProxy的调用方式如下:

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

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

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

    最后我发现

    -Djavax.net.debug=all
    

    作为虚拟机的一个参数,它向我展示了我所需要的,正在发送的头文件