3

Webサービスからデータを読み取っています。リンクをブラウザに配置すると問題が発生します。私がこのように走るとき、私にエラーを与えます。パラメータの送信方法が原因だと思います。私のパラメータリストにはこれがありdID=1,5,7,11,14,18,26&FromDate=18 Sep 2012 00:00 am&ToDate=18 Sep 2012 10:00 amます。ここでエンコードを行う必要がありますか?

URL xmlURLDM = new URL(urlDM);
InputStream xml2 = xmlURLDM.openStream();

このエラーが発生します

java.io.IOException: Server returned HTTP response code: 400 for URL: 
 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1612)
        at java.net.URL.openStream(URL.java:1035)
        at xmlreader.main(xmlreader.java:172)
4

2 に答える 2

7

エンコードが必要です。問題を引き起こしているのは、URL 内のスペースである可能性が最も高いです。URL エンコーディングに組み込まれた Java を使用します。例えば:

String encoded = URLEncoder.encode(myUrl, "UTF-8");

... URL としてエンコードされた Web サービスを呼び出す

ステータス コードが 400 になる理由は他にもある可能性がありますが、おそらくこのエンコーディングの問題が最初の障害になります。

于 2012-09-18T03:57:44.537 に答える
1

URLのドキュメントに

URL クラス自体は、RFC2396 で定義されているエスケープ メカニズムに従って URL コンポーネントをエンコードまたはデコードしません。URL を呼び出す前にエスケープする必要があるフィールドをエンコードすること、および URL から返されるエスケープされたフィールドをデコードすることは、呼び出し元の責任です。さらに、URL には URL エスケープの知識がないため、同じ URL のエンコードまたはデコードされた形式の間の同等性を認識しません。

URLEncoder.encode()呼び出す前に使用してくださいURL()

于 2012-09-18T04:12:44.863 に答える