2

Java から従来の ASP に Web ストアの API にアクセスするためのサンプル コードを書き直しています。Java コードが機能し、リクエストを送信すると、正しい結果が返されます。ASP コードはまったく同じことを行いますが、承認に問題があるというエラーを返すだけです。hmac 署名文字列 (sha256、base64) を確認しましたが、Java コードと同じ結果になります。

そこで、HTTP リクエストが実際にどのように表示されるかを確認し、それらを比較することにしました。Fiddler は良い選択のように見えましたが、何らかの理由で両方の HTTP 要求が表示されません。

この件についてはすでに多くのことが書かれており、私はいくつかのことを試しましたが、今のところうまくいきません。それらはすべて、localhost:8888 である Fiddler プロキシを介して要求をルーティングすることを説明しています。

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 は「すべてのプロセス」を表示するように設定されています。

それでも、2 つの HTTP リクエストのいずれも表示されません。表示される唯一のものは、HTTP 要求を実行する ASP ページ (http://localhost:8082/test.asp) です。ブラウザを使用すると、Fiddler に他のものが表示されるので、動作していることがわかります。

誰かアイデアはありますか?

4

1 に答える 1

2

私は当初、両方のプログラムでFiddlerに何も表示されなかったため、Fiddlerに問題があると考えていました。

しかし、両方のプログラムで問題が発生しました。ASPコードの場合、setProxyは次のように呼び出す必要があります。

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

したがって、「=」ではなく「::/」

リクエストはhttpsプロトコルを使用して送信されたため、JavaコードでApacheHttpClientリクエストをFiddlerに表示するのは非常に複雑でした。私はいくつかの提案された解決策を試しましたが、それを機能させることができませんでした。

結局、私は追加することを知りました

-Djavax.net.debug=all

VMの引数として、必要なもの、つまり送信されていたヘッダーが表示されました。

于 2012-12-04T12:33:22.000 に答える