2016-07-17 3 views
2

HttpUrlConnectionを使用してクラスを実装し、GoogleのジオコーディングAPIからデータを取得しました。私はAndroid上でこのコードを使用していた場合、それが正常に動作します。しかし、すぐに、私は別の「普通の」Javaプログラムでこのコードを使用していますように、私は時々ステータスコード400(BadRequest)を取得しています。ここに私のコードは次のとおりです。HttpUrlConnection BadRequest - Statuscode 400

HttpURLConnection c = null; 
    StringBuilder sb = new StringBuilder(); 
    try { 
     URL u = new URL(url); 
     c = (HttpURLConnection) u.openConnection(); 
     c.setRequestMethod("GET"); 
     c.setRequestProperty("Content-length", "0"); 
     c.setUseCaches(false); 
     c.setAllowUserInteraction(false); 
     c.setConnectTimeout(timeout); 
     c.setReadTimeout(timeout); 
     c.connect(); 
     int status = c.getResponseCode(); 

     switch (status) { 
      case HttpURLConnection.HTTP_OK: 
      case HttpURLConnection.HTTP_CREATED: 
       BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream())); 
       String line; 
       while ((line = br.readLine()) != null) { 
        sb.append(line + "\n"); 
       } 
       br.close(); 
     } 
    } catch (SocketTimeoutException ex){ 
     // Handle ... 
    } catch (MalformedURLException ex) { 
     // Handle ... 
    } catch (IOException ex) { 
     // Handle ... 
    } finally { 
     if (c != null) { 
      try { 
       c.disconnect(); 
      } catch (Exception ex) { 

      } 
     } 
    } 

私は信頼性の高いインターネット接続とも私は私のウェブブラウザでそれをしようとするたびに、私は、データの作品を受信するために使用していますURLを持っています。 ありがとうございます!

+2

それは、より完全な例なしに間違っているかを知るには少し厳しいですが、あなたは上のコンテンツ長を設定している理由はすぐに私は疑問クライアントの要求どのデータのプロデューサーもそれを設定します。しかし、それは実際にはどちらか何かを傷つけることがありません。ヒットしているURLを共有できますか? – stdunbar

+0

本当にありがとうございました。まあコンテンツ長が、残念ながら変更をしなかっ取り除きます。私が使用しているURLはかなりシンプルです。これは、この 'https://maps.googleapis.com/maps/api/geocode/json?address = 95685 + Falkenberg'のようなGoogleマップジオコーディングAPIです。もちろん、このURLの後に私のapiキーを設定しています。 –

答えて

1

不正な要求は、多くの場合、inadequatのURLによって引き起こされます。あなたがいない言及したように、すべてのURLは、このエラー、彼らの唯一のビューを提供します。だから、それはそれと関係しなければならない。使用しているURLの正しいエンコーディングを確認するために、次のコードを試してみてください。

String url = ...; // your url 
url = URLEncoder.encode(url,"UTF-8"); 
// Use 'url' ... 
関連する問題