解决方案 »
- 求MQTT推送的解决方案
- android2.3中应用程序“时钟”的背景与桌面背景是同步的,请问在源码中是如何实现的?
- ProgressDialog进度条:使用ProgressDialog.show创建对象,程序出错
- android怎么写好单元测试呢?
- 下载了一个相册滑动的效果,想把它引入到自己的项目运行,要怎么做??
- android小白问题,spinner及数据包相关
- android在java层执行input keyevent 4 命令失败?????
- 现在还能进行googleMap的开发吗?
- android 屏幕共享功能。。。。。。
- Mac系统怎么安装Android的ADT和SDK啊?被墙了,下不了啊!
- 安卓系统编写shell脚本,sh文件能支持mv命令吗?
- 用android单元测试即junit,测试新浪微博API问题。。
去掉参数:HttpMultipartMode.BROWSER_COMPATIBLE 试试。我以前也碰到这样的问题过。
String code = "0";
Log.i("http", actionUrl);
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 1000*30);
HttpConnectionParams.setSoTimeout(httpParameters, 1000*30);
HttpConnectionParams.setTcpNoDelay(httpParameters, true); HttpClient httpclient = new DefaultHttpClient(httpParameters);
HttpPost httppost = new HttpPost(actionUrl);
MultipartEntity mpEntity = new MultipartEntity();
try {
File imageFile = new File(imagepath);
if(!imageFile.exists()) {
Log.i("http", "999");
code = "999";
}
for (Map.Entry<String, String> entry : params.entrySet()) {
String key = entry.getKey().toString();
String value = entry.getValue().toString();
Log.i("Http","KEY:" + key + ",Value:" + value );
mpEntity.addPart(key, new StringBody(value));
}
FileBody file = new FileBody(imageFile);
mpEntity.addPart("name", file);
httppost.setEntity(mpEntity);
HttpResponse response = httpclient.execute(httppost);
if (response.getStatusLine().getStatusCode() == 200) {
code = EntityUtils.toString(response.getEntity());
System.out.println("result:" + code);
Log.i("http", code);
}
} catch (Exception e) {
return code;
}
return code;
}
这个是我昨天刚写的,可用。
需要用到2个jar包,httpmime-4.0.jar,apache-mime4j-0.6.jar
还有一种是
public static String post(String actionUrl, Map<String, String> params,
Map<String, File> files) throws IOException {
StringBuilder sb2 = new StringBuilder();
String BOUNDARY = java.util.UUID.randomUUID().toString();
String PREFIX = "--", LINEND = "\r\n";
String MULTIPART_FROM_DATA = "multipart/form-data";
String CHARSET = "UTF-8"; URL uri = new URL(actionUrl);
HttpURLConnection conn = (HttpURLConnection) uri.openConnection();
conn.setReadTimeout(5 * 1000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("connection", "keep-alive");
conn.setRequestProperty("Charsert", "UTF-8");
conn.setRequestProperty("Content-Type", MULTIPART_FROM_DATA
+ ";boundary=" + BOUNDARY); StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append(PREFIX);
sb.append(BOUNDARY);
sb.append(LINEND);
sb.append("Content-Disposition: form-data; name=\""
+ entry.getKey() + "\"" + LINEND);
sb.append("Content-Type: text/plain; charset=" + CHARSET + LINEND);
sb.append("Content-Transfer-Encoding: 8bit" + LINEND);
sb.append(LINEND);
sb.append(entry.getValue());
sb.append(LINEND);
} DataOutputStream outStream = new DataOutputStream(
conn.getOutputStream());
outStream.write(sb.toString().getBytes());
if (files != null) {
// int i = 0;
for (Map.Entry<String, File> file : files.entrySet()) {
StringBuilder sb1 = new StringBuilder();
sb1.append(PREFIX);
sb1.append(BOUNDARY);
sb1.append(LINEND);
// sb1.append("Content-Disposition: form-data; name=\"file"+(i++)+"\"; filename=\""+file.getKey()+"\""+LINEND);
sb1.append("Content-Disposition: form-data; name=\"userupfile\"; filename=\""
+ file.getKey() + "\"" + LINEND);
sb1.append("Content-Type: application/octet-stream; charset="
+ CHARSET + LINEND);
sb1.append(LINEND);
outStream.write(sb1.toString().getBytes()); InputStream is = new FileInputStream(file.getValue());
byte[] buffer = new byte[1024];
int len = 0;
while ((len = is.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
} is.close();
outStream.write(LINEND.getBytes());
}
} byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINEND).getBytes();
outStream.write(end_data);
outStream.flush(); int res = conn.getResponseCode();
InputStream in = null;
if (res == 200) {
in = conn.getInputStream();
int ch; while ((ch = in.read()) != -1) {
sb2.append((char) ch);
}
Log.i("CAMERA", sb2.toString());
} return in == null ? null : sb2.toString();
}
希望对你有用
谢谢各位的认真回复,问题已经解决,代码没问题,是调用的时候传的有一个参数是Json格式的参数,这个传的格式和服务器不符合,所以一直不成功!