0

私の問題は私のタイトルにあります。また、Javaコードと詳細を提供します。

void getSourceCode(String text_url){

    String source_code="";
    BufferedReader reader = null;

    try {
          reader = new BufferedReader(new InputStreamReader((new URL(text_url)).openStream(), Charset.forName("UTF-8")));
          String inputLine;
          while ((inputLine = reader.readLine()) != null) {
            source_code+=inputLine.replace(" ", "");
          }
    } 

    catch (Exception e) {
        e.printStackTrace();
    } 

    finally {
          if (reader != null) {
                try {
                  reader.close();
                } 
                catch (IOException e) {
                  e.printStackTrace();
                }
          }
    }

    System.out.println( source_code );
}

たとえば、「http://ekenlermangalkomuru.com/urunlerimiz/liste/144/BinarKömürü」をhtml a href = "..."解析を介してパラメーターとして送信しますが、エラーレポートは次のとおりです。

java.io.IOException:サーバーがHTTP応答コードを返しました:URLの400: http
: //ekenlermangalkomuru.com/urunlerimiz/liste/144/BinarKömürüatsun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)at java.net.URL.openStream(不明なソース)

リンクはすべてのブラウザで機能しますが、Javaコードを介して接続しようとすると機能しません。どうすれば解決できますか?すべてのアドバイスをありがとう..

4

2 に答える 2

2

エラー400は、リクエストの形式が正しくないため、サーバーがリクエストを処理できないことを意味します。リクエストURLが適切にURLエンコードされていることを確認しますか?http://ekenlermangalkomuru.com/urunlerimiz/liste/144 /BinarKömürüのように、少なくともöとüはASCII文字ではないため、整形式のリクエストを作成するにはエンコードする必要があります。

于 2012-09-18T08:41:33.230 に答える
1

エラー 400 は、サイトに対して「適切な」リクエストを行っていないことを意味します。HTTP 経由で URL を開くには、BufferedReader 以外の何かが必要になると思います。これは、プロトコルが何を見たいか、利用可能なキャッシュがあるかどうかなどを知る必要があるためです。URL を開くには、HttpUrlConnection を使用する必要があります。Java でHTTP リクエストを送信する方法を確認してください。情報を得るには、 http://docs.oracle.com/javase/7/docs/api/java/net/HttpURLConnection.htmlも役立つ可能性があります。

于 2012-09-18T08:37:57.843 に答える