求解决一个利用HttpClient4用post连接服务器的问题,已经可以读服务器,服务器却不能收到post参数

templefox 2014-02-10 03:01:44
	private void multifunctionalConnect(final String url,
final Map<String, String> keyValuePair,
final Map<String, Bitmap> keyFilePair, final MessageHandler handler)
throws ClientProtocolException, IOException {
// Create client with parameters, to control timeout or else.
HttpParams param = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(param, TIME_OUT);
HttpConnectionParams.setSoTimeout(param, TIME_OUT);
HttpClient client = new DefaultHttpClient(param);

// Create request with parameters.
HttpPost request = new HttpPost(url);
request.addHeader(HTTP.CHARSET_PARAM, HTTP.UTF_8);

// 1.Create multipart entity.
MultipartEntityBuilder entity = MultipartEntityBuilder.create();
entity.setCharset(Charset.forName(HTTP.UTF_8));
//entity.setBoundary("******");
//entity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
// 2.Add text body.
if (keyValuePair != null && !keyValuePair.isEmpty()) {
for (String key : keyValuePair.keySet()) {
entity.addTextBody(key, keyValuePair.get(key),ContentType.TEXT_PLAIN);

}
}
// 3.Add binary body.
if (keyFilePair != null && !keyFilePair.isEmpty()) {
for (String name : keyFilePair.keySet()) {
Bitmap bitmap = keyFilePair.get(name);
File tempFile = File.createTempFile(name, ".jpeg");
FileOutputStream outputStream = new FileOutputStream(tempFile);
bitmap.compress(CompressFormat.JPEG, 100, outputStream);
outputStream.flush();
outputStream.close();

FileInputStream inputStream = new FileInputStream(tempFile);

entity.addBinaryBody(name, inputStream);

}
}
// 4.Set Entity
request.setEntity(entity.build());

// 5.Execute and get response
HttpResponse response = client.execute(request);
String json = null;
if (HttpStatus.SC_OK == response.getStatusLine().getStatusCode()) {
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
StringBuilder sb = new StringBuilder();
for (String s = reader.readLine(); s != null && s.length() != 1
&& !s.isEmpty(); s = reader.readLine()) {
String ss = s.substring(1);
sb.append(ss);
}

json = sb.toString();

}


我使用php服务器 比如post参数中有键值mkey:mvalue
php的取法为$_POST['mkey'],然后echo出来,但读出来的结果都是空,求教。
而正常的读如 echo "hello world";测试可以。

之前我用了另一个实体UrlEncodedFormEntity能实现。
不知是不是如今的MultipartEntity的问题
...全文
186 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
templefox 2014-02-10
  • 打赏
  • 举报
回复
测试了很久仍然不知道问题出在哪里 我直接用httpUrlConnection的OutPutStream把上述entity写入发现是可以用$_POST取得 DataOutputStream dos = new DataOutputStream(httpURLConnection.getOutputStream()); entity.build().writeTo(dos); 所以现在MultipartEntity配合httpUrlConnection是OK的 然后HttpClient配合UrlEncodedFormEntity也ok 但是两个前者就不ok!!

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧