HttpPostでクエリが送信できない
とりあえずAndroidのソースなのでAndroidのカテゴリにします
次のようなスクリプトをeclipseで組んでみたのですが、実際に実行するとparamsで指定したクエリが全く送信できていません。javaです。
connectUrlはhttp://shindanmaker.com/(診断ページ番号)で、
paramsには
"u" : (診断内容)
"from" : ""(空の文字列)
が入っています。
文字化けは大丈夫です。
アドバイスお願いします。
public String httpPostRequest( String connectUrl, List<NameValuePair> params, String encode ){
//-----[クライアント設定]
try
{
HttpClient httpclient = new DefaultHttpClient();
// MultipartEntity entity = new MultipartEntity();
//テキストの送信
// for( NameValuePair pair : params ){
// entity.addPart( pair.getName(), new StringBody(pair.getValue(),Charset.forName(HTTP.UTF_8)));
// }
// entity.addPart(filePair.getName(), new FileBody(file,"application/octet-stream"));
HttpPost httppost = new HttpPost(connectUrl);
httppost.setURI(new URI(connectUrl));
httppost.setHeader("User-Agent", "Android");
httppost.setHeader("Content-type","text/html");
httppost.setHeader("Content-Type", "multipart/form-data");
httppost.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE,false);
//-----[POST送信]
httppost.setEntity(new UrlEncodedFormEntity(params, encode));
HttpResponse response = httpclient.execute(httppost);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
response.getEntity().writeTo(byteArrayOutputStream);
//-----[サーバーからの応答を取得]
if(response.getStatusLine().getStatusCode() != HttpStatus.SC_OK){
Toast.makeText(this, "[error]: "+response.getStatusLine(), Toast.LENGTH_LONG).show();
return null;
}
// return EntityUtils.toString( response.getEntity());//.getBytes( encode ).toString();
return byteArrayOutputStream.toString();
}
catch (Exception e){
e.printStackTrace();
return null;
}
}
お礼
ありがとうございます。 このクラスを使うと、下記のようにして、 2つのOutputStreamをまとめることができそうですね。 ServletOutputStream out; ByteArrayOutputStream branch; TeeOutputStream(out, branch); 時間のあるときに試してみたいと思います。 結果が分かったら報告します。