private void CreateaMultiPartRequest() {
try{
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://172.16.22.232:8080/RESTfulExample/rest/multiPartFileUpload");
MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
post.setHeader("Content-type", "multipart/form-data; boundary="+"~~~~~");
String Usersettings = "{\"uId\":\"atcc02\", \"bomId\":\"IC014654_12345\", \"fileName\":\"file_12345.pdf\"}";
File cfile = new File(receivedUri.getPath());
reqEntity.addPart("file", new FileBody(cfile,"application/octet"));
reqEntity.addPart("settings", new StringBody(Usersettings,"application/json",Charset.forName("UTF-8")));
post.setEntity(reqEntity);
HttpResponse response = client.execute(post);
HttpEntity resEntity = response.getEntity();
if (resEntity != null)
{
resEntity.consumeContent();
}
else{
}
}
catch(Exception e)
{
}
}
每当我尝试执行此代码时,我都会从服务器获得“400:BAD REQUEST”。在这里无法解决问题,有人可以帮助我纠正这个问题吗?
答案 0 :(得分:0)
您可能对FileBody使用了错误的MIME类型。请尝试使用application / octet-stream。
要获得正确的MIME类型,请使用以下代码:
MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension);
查看我用于发出网络请求的小型图书馆:http://code.google.com/p/android-dman/source/browse/trunk/src/org/nkuznetsov/lib/dman/DownloadManager.java
答案 1 :(得分:0)
在这里你可以试试这个,它对我很有用。
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost(url);
FileBody bin = new FileBody(new File(args[5]));
long size = bin.getContentLength();
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("image1", bin);
String content = "";
try {
httpPost.setEntity(reqEntity);
HttpResponse response = httpClient.execute(httpPost, localContext);
HttpEntity ent = response.getEntity();
InputStream st = ent.getContent();
StringWriter writer = new StringWriter();
IOUtils.copy(st, writer);
content = writer.toString();
} catch (IOException e) {
}