我正在将用于从 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
在这样的代码中(这可能不适用于 v6 以外的其他版本的“MSXML2.ServerXMLHTTP”):
httpRequest.setProxy 2, "http=localhost:8888", ""
Java 代码使用 Apache HttpClient,根据手册,代理可以这样设置:
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 上会显示其他内容,所以我知道它正在工作。
有人有什么想法吗?