0

www.domain.com.au で検索を実行したいと考えています。成功した HTTP 応答を取得するには、多数の URL パラメータを指定する必要があります。しかし

  1.  String url = "http://www.domain.com.au/"; // or www.realestate.com.au
  2.  String charset = "UTF-8";
  3.  String param1 = "Melbourne 3000 VIC"; // simple search on the web page
  4.
  5.  URLConnection connection = (URLConnection) new URL(url + "?" + param1).openConnection();
  6.  connection.setRequestProperty("Accept-Charset", charset);
  7.  connection.connect();
  8.  connection.setDoInput(true);
  9.  connection.setDoOutput(false);
 10.  connection.connect();
      .......

応答は HTTP 400 エラーでした。そのため、問題の原因を理解するために、次の質問についてアドバイスをお願いします。

( i ) パラメータ名は param1 にするべきか、それとも Web ページ上の別の名前にするべきか? もしそうなら、それは何ですか?

(ii) パラメータの名前が param1 であると仮定して、5 行目は正しいですか? 6行目ですでに明示的に設定されていますが、 URLEncoder.encode(param1, charset) を含める必要がありますか?

上記のコード スニペットは、パラメーターが不要な他の単純な Web ページで機能します。

アドバイスをいただければ幸いです。

ありがとう、

ジャック

4

3 に答える 3

0

使用方法は、 BalusCjava.net.URLConnectionによる次のリンクで非常によく説明されています。

java.net.URLConnection を使用して HTTP 要求を起動および処理する

于 2012-08-31T08:21:24.637 に答える
0

いくつかのこと:

1. そこでは、名前と値のペアを渡していません。典型的な GET URL リクエストは次のようになります

http://www.domain.com.au/?param1=value

値を渡すだけで、URLは次のようになります

http://www.domain.com.au/?Melbourne 3000 VIC

2. 行番号を変更します。5~

URLConnection connection = (URLConnection) new URL(url + "?parame1=" + param1).openConnection();

さらに、クエリ文字列をエンコードして、スペースを html エンコードで置き換えます。その方法はこちらをご確認ください。

于 2012-08-31T08:21:34.670 に答える
0

doamin.com.au の Web サイトを確認しました。

1) 検索パラメータの名前が「searchterm」で、URL にキー (key=value) がありません。

HttpURLConnection connection = (HttpURLConnection) new URL(url + "?searchterm=" + param1).openConnection();

2) 特殊文字がある場合は、エンコーディングを含める必要があります。

Web サイトからコンテンツを返すコード例を次に示します。

    public void searchDomain(String key) throws Throwable
{
    String url = "http://www.domain.com.au/"; // or www.realestate.com.au
    String charset = "UTF-8";
    String param1 = "Melbourne"; // simple search on the web page
    HttpURLConnection connection = (HttpURLConnection) new URL(url + "?searchterm=" + param1).openConnection();
    connection.setRequestProperty("Accept-Charset", charset);
    connection.setDoInput(true);
    connection.setDoOutput(true);
    connection.connect();

    java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(connection.getInputStream()));
    java.lang.StringBuffer sb = new java.lang.StringBuffer();
    java.lang.String str = br.readLine();
    while (str != null) 
    {
        sb.append(str);
        str = br.readLine();
    }
    br.close();
    connection.disconnect();

    System.out.println(sb.toString());
}
于 2014-07-29T00:03:59.073 に答える