我正在向服务器发送一个多部分请求,其中将包含一个图像以及几个字符串。我还没有找到任何关于如何完成这项工作的指南,我所发现的只是如何发布和获取和放置等,但在 multipart 上什么也没有。我会很高兴得到任何帮助,谢谢
问问题
2161 次
2 回答
5
这里有一个使用 @Rest 接口声明它的示例,这里有一个使用 Spring Android 的示例(AA 用于生成客户端类)
总之,您可以使用这样的东西(此代码未经测试):
@Rest(rootUrl = "http://mycompany.com/images", converters = FormHttpMessageConverter.class)
public interface RestClient {
@Post("/loadimage")
void sendImage(MultiValueMap formfields);
}
@EActivity
public class MyActivity extends Activity {
@RestService
RestClient restClient; //Inject it
void sendImage(InputStream in) {
MultiValueMap values = new org.springframework.util.LinkedMultiValueMap<String,Object>();
try {
values.put("fileName", "a.jpg");
values.put("file", in);
restClient.sendImage(values);
} finally {
in.close();
}
}
}
于 2014-01-24T13:12:40.603 回答
0
试试这个:
String url = "here_your_url";
File image = new File("here_your_image's_route");
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
然后:
MultipartEntityBuilder multipartEntity = MultipartEntityBuilder.create();
multipartEntity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
multipartEntity.addPart("image", new FileBody(image));
final HttpEntity requestEntity = multipartEntity.build();
//You can add more HttpEntity
httpPost.setEntity(requestEntity);
HttpResponse response = httpClient.execute(httpPost);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
if(statusCode == HttpStatus.SC_OK) {
//everything is correct
} else {
//something has gone wrong
}
我为此使用了三个库:
- httpcore-4.3.jar
- httpmime-4.3.1.jar
- apache-mime4j-0.4.jar
检查:http://hc.apache.org/downloads.cgi,我认为后者不在这里,看看别处。
于 2014-01-23T20:49:44.983 回答