/** * HTTP POSTを行う * * @param url HTTP通信を行うターゲットのURL * @param requestParams パラメータ * @param encode HTTP要求時の文字コード * @return 受信結果の文字列 */ public String httpPostRequest( String url, Map<String, String> requestParams, String encode ){ try{ HttpPost httppost = new HttpPost( url ); DefaultHttpClient client = new DefaultHttpClient(); // リクエストパラメータの設定 List<NameValuePair> params = new ArrayList<NameValuePair>(); for (Map.Entry<String, String> entry : requestParams.entrySet()) { params.add(new BasicNameValuePair((String) entry.getKey(), (String) entry.getValue())); } // POST データの設定 httppost.setEntity(new UrlEncodedFormEntity(params, encode)); HttpResponse response = client.execute( httppost ); int status = response.getStatusLine().getStatusCode(); // 結果が正しく帰って来なければエラー if ( status != HttpStatus.SC_OK ){ throw new Exception( "" ); } return EntityUtils.toString( response.getEntity()); }catch ( Exception e ){ return null; } }
POST データを付加する際,
httppost.setEntity(new UrlEncodedFormEntity(params, encode));
とするが, ここで第二引数に, ちゃんと encode を指定してあげること。
内部エンコードがUTF-8だろうからって指定しなかったために、えらい目に会いました。
Webプログラム (PHP等) でもそうだけど、文字コードは明示的にちゃんと指定してあげなきゃだめですね。猛省。。。
0 コメント:
コメントを投稿