java - 某些 HTTP 请求不会显示在 Fiddler 中

标签 java asp-classic fiddler

我正在将用于从 Java 访问网络商店 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

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

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 上会显示其他内容,所以我知道它正在工作。

有人有什么想法吗?

最佳答案

我原本以为是因为两个程序在 Fiddler 上都没有显示任何内容,所以 Fiddler 出了问题。

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

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

所以用“::/”代替“=”

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

最后我发现添加

-Djavax.net.debug=all

作为虚拟机的参数,向我展示了我需要的内容,即正在发送的 header 。

关于java - 某些 HTTP 请求不会显示在 Fiddler 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13634593/

相关文章:

Java服务器自签名证书+客户端证书和SSL握手_失败

mysql - 通过 ODBC 连接检索的表情符号数据显示为问号

sockets - 如何创建中间人工具

java - 通过 Fiddler 捕获 Java https 并获取 javax.net.ssl.SSLHandshakeException

Fiddler 更新后无法从 iOS 设备捕获流量

java - 如何在 Graphics2D 中根据百分比绘制圆的部分?

java - 我在 camel 下使用 apache shiro,我无法将组映射到具有 ldap/active 目录的角色

java - JAVA中使用字符串的回文

mysql - SQL注入(inject)预防

通过 IIS 在 ASP Classic 中进行 HTTP 身份验证(基本或摘要)