0

アプリケーションを使用して次の URL を送信すると、次のエラーが発生します。

サーバーが HTTP 応答コードを返しました: URL に対して 400: http://maps.googleapis.com/maps/api/distancematrix/xml?origins=Medical Centre+ 308 George Street+ Sydney&destinations= Science Museum Exhibition Road London SW7 2DD&mode=driving&sensor=false

しかし、ブラウザに URL を入力すると、その URL が正しいことがわかります。

4

2 に答える 2

1

おそらく、取得する前に URL を urlencode する必要があります。クエリ文字列パラメーターの Java URL エンコーディングを見てください。

于 2012-10-05T04:48:24.567 に答える
1

接続を開いてデータを読み取る前に、リクエスト URL をエンコードしてください。理解を深めるために、以下のコードをご覧ください。

package com.stackoverflow.works;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLEncoder;

public class URLReader {
    /*
     * @author: sarath_sivan
     */

    public static void read(String url) throws IOException {
        setProxy();//only invoke this method if you are using any proxy to open connection
        URL httpURL = new URL(url);
        BufferedReader bufferedReader = new BufferedReader(
        new InputStreamReader(httpURL.openStream()));

        String inputLine;
        while ((inputLine = bufferedReader.readLine()) != null) {
            System.out.println(inputLine);
        }   
        bufferedReader.close();
    }

    public static void setProxy() {
        System.getProperties().put("http.proxyHost", "xxx.xxx.xx.xx");//replace with your proxy
        System.getProperties().put("http.proxyPort", "8080");
    }

    public static String encodeURL(String url) throws UnsupportedEncodingException {//encoding your request url parameters here
        StringBuilder encodedURL = new StringBuilder(url);
        encodedURL.append("?origins=").append(encode("Medical Centre+ 308 George Street+ Sydney"));
        encodedURL.append("&destinations=").append(encode(" Science Museum Exhibition Road London SW7 2DD"));
        encodedURL.append("&mode=").append("driving");
        encodedURL.append("&sensor=").append("false");
        return encodedURL.toString();
    }

    public static String encode(String string) throws UnsupportedEncodingException {
        return URLEncoder.encode(string, "ISO-8859-1");
    }

    public static void main(String[] args) throws IOException {
        String url = "http://maps.googleapis.com/maps/api/distancematrix/xml";
        read(encodeURL(url));
    }

}

出力は次のようになります。 ここに画像の説明を入力

于 2012-10-05T06:18:27.727 に答える