android 中使用MultipartEntity但是在服务器端获取不到参数

PSAR 2015-11-27 12:43:05
android端代码:


public static String postRequest(final String url
, final Map<String ,String> rawParams)throws Exception
{
FutureTask<String> task = new FutureTask<String>(
new Callable<String>()
{

@SuppressWarnings("deprecation")
@Override
public String call() throws Exception
{
// 创建HttpPost对象。

HttpPost post = new HttpPost(url);
Log.e("HttpClient",url);
Log.e("HttpClient","149!");
// MultipartEntityBuilder builder = MultipartEntityBuilder.create();
MultipartEntity entity=new MultipartEntity();
// 如果传递参数个数比较多的话可以对传递的参数进行封装
List<NameValuePair> params =
new ArrayList<NameValuePair>();
int i=rawParams.size();


Log.e("参数个数",String.valueOf(i));

Log.e("HttpClient","160!");
// Log.e("status",rawParams.get("status"));
for(String key : rawParams.keySet())
{


if(!key.startsWith("photo"))
{
Log.e(key, rawParams.get(key));
// Log.e(key, rawParams.get(key));


// builder.addTextBody(key, rawParams.get(key));

// StringBody strBpdy=new StringBody("lalalllallalla",Charset.forName("UTF-8"));
//
Log.e("new stringbody", "okokookoko!!!!!!!!!!!!!!!!!@#$%^&*()");
//
// builder.addPart(key,strBpdy);
entity.addPart(key, new StringBody(rawParams.get(key), ContentType.create("text/plain", Consts.UTF_8)));

Log.e("addpart", "okokookoko");

}else{

// builder.addPart(key, new FileBody(new File(rawParams.get(key))));
entity.addPart(key, new FileBody(new File(rawParams.get(key))));
}

}

Log.e("HttpClient","178");

// 设置请求参数
// post.setEntity(builder.build());

Log.e("HttpClient","178");
post.setEntity(entity);

// 发送POST请求
HttpResponse httpResponse = httpClient.execute(post);

Log.e("HttpClient","185");

// 如果服务器成功地返回响应
if (httpResponse.getStatusLine()
.getStatusCode() == 200)
{
// 获取服务器响应字符串
String result = EntityUtils
.toString(httpResponse.getEntity());
return result;
}else
{
Log.e("返回","meiyou!");
}
return null;
}
});
new Thread(task).start();
return task.get();
}


服务器端代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


System.out.println("shouhsoushoushhsuoh");
response.setContentType("text/html");
PrintWriter out = response.getWriter();

int p= request.getParameterMap().size();

System.out.print(String.valueOf(p));

String bookName = request.getParameter("ISBN");
String content = request.getParameter("publisher");

System.out.println(bookName+content);



out.write("okkookoko!");
out.flush();
out.close();
}


Android端能收到服务器的返回,但是服务器端无法收到android端的参数,request.getParameterMap().size()的返回值为0
求大神帮忙看下:

...全文
336 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
psychooo 2016-04-08
  • 打赏
  • 举报
回复
引用 3 楼 qq_25431991 的回复:
楼主还在吗?android没有自带MultipartEntity类,我导入Apache的httpclient的MultipartEntity类会报"java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE"错误,不知道楼主怎么解决的?Apache网站里的httpclient for android下载页面是404错误,真心累...
我也遇到了这个问题,后来发现可能是jar版本问题,MultipartEntity依赖于httpmime这个包,下一个httpmime-4.1.1替换掉原来的就解决了http://pan.baidu.com/share/link?shareid=90009&uk=4012369003
楚荆 2016-03-01
  • 打赏
  • 举报
回复
楼主还在吗?android没有自带MultipartEntity类,我导入Apache的httpclient的MultipartEntity类会报"java.lang.NoSuchFieldError: org.apache.http.message.BasicHeaderValueFormatter.INSTANCE"错误,不知道楼主怎么解决的?Apache网站里的httpclient for android下载页面是404错误,真心累...
oklehehe 2016-02-14
  • 打赏
  • 举报
回复
楼主最后有没有解决啊 我也出现了这个问题 设置编码就获取不到参数 不设置可以但是中文乱码
PSAR 2015-11-27
  • 打赏
  • 举报
回复
怎么没人回答啊?自己顶下!

80,351

社区成员

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

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