4

次のコードを使用してGETリクエストを送信し、応答を受信して​​います。

try {
  URL url = new URL(strurl);
  HttpURLConnection con = (HttpURLConnection) url.openConnection();

  con.setRequestMethod("GET");
  con.setDoOutput(true);            

  con.connect();

  BufferedReader is = new BufferedReader(new InputStreamReader(con.getInputStream()));
  String line;
  String vAnswerStr="";
  String lineSeparator = System.getProperty("line.separator");

  while ((line = is.readLine()) != null) {
      vAnswerStr = vAnswerStr + line + lineSeparator;
  }
  is.close();
} catch (IOException ex) {
  ex.printStackTrace();
}

これstrurlはこのようなsmthですが、その形式が問題に関連している可能性はないと思います。

https://somesite.ru/?arg1=val1&arg2=val2

期待される出力はxml、smthのようになります。

<?xml version="1.0" encoding="UTF-8"?>
<response>
<tag1>00000</tag1>
<tag2>0</tag2>
    ...
</response>

10回の試行のうち5回がその仕事をします。

他の5回の試行が返されます:

java.io.IOException:サーバーがHTTP応答コードを返しました:URLに対して415: https ://somesite.ru/?arg1=val1&arg2=val2

sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)

HTTP415エラーに関するSOに関するいくつかの投稿を読みました。しかし、彼らは役に立たないようです。さまざまなリクエストプロパティを試しましたが、見つからなかったか、そうではありません。

IDEはNetBeans7.0です

誰かが私に問題を解決するための正しい方向性を教えてもらえますか?

編集

ブラウザから同じリクエストを実行すると、100%の試行で機能することを忘れてしまいました。

4

1 に答える 1

2

あなたが調べるべきいくつかのこと:

  1. サーバーにアクセスできる場合、それは何かをログに記録していますか?
  2. 宛先はどのコンテンツタイプをサポートしていますか?リモートサーバーが送信内容を認識できるように、コンテンツタイプを指定する必要があります。

    con.setRequestProperty( "Content-Type"、 "text / html; charset = utf-8");

  3. テキストをエンコードする必要があるかもしれません-JavaのURLEncoderを見てください

于 2012-10-04T02:32:29.303 に答える