2017-11-09 32 views
0

私はパラメータでGETリクエストを送信するためにこのコードをテストしています。パラメータの値がスペースを含む文字列の場合、このコードは失敗します。例:http://company.com/example.php?value=Jhon 123。すでにJhon123(withou任意のスペース)を送ってもうまく動作します。スペースを含むパラメータの値でGETリクエストを送信するにはどうすればよいですか?

これはどうしてですか?

private static void sendGet(String site, String params) throws Exception { 

     site += params; 
     URL obj = new URL(site); 

     try { 

      HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 

      // optional default is GET 
      con.setRequestMethod("GET"); 

      int responseCode = con.getResponseCode(); 
      System.out.println("\nSending 'GET' request to URL : " + site); 
      System.out.println("Response Code : " + responseCode); 

      BufferedReader in = new BufferedReader(
        new InputStreamReader(con.getInputStream())); 
      String inputLine; 
      StringBuffer response = new StringBuffer(); 

      while ((inputLine = in.readLine()) != null) { 
       response.append(inputLine); 
      } 
      in.close(); 

      //print result 
      System.out.println(response.toString()); 
     } catch (Exception ex) { 
     } 

    } 
+0

あなたがたqueryStringにエンコード・デコード方法の多くを使用することができ、でurlencodeは、ブラウザの標準に従うが、いくつかの回は失敗する可能性が最も簡単です、base64では、より良いアプローチですデータの規模が大きすぎない場合は – PSo

+1

@ PSo、ありがとうございます。 URLEncoderはこの問題の解決策でした。 –

答えて

0

あなたのパラメータをエンコードするためにURLEncoderを使用することができます。

String url = "http://company.com/example.php?value=" + URLEncoder.encode("Jhon 123", "utf-8"); 
関連する問題