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