- /**
- * 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 コメント:
コメントを投稿