80,351
社区成员
发帖
与我相关
我的任务
分享
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();
}