使用httpclient post 方式 调用远程接口
Map<String, Object> map = new HashMap<String, Object>();
String xmlStr = xxservice.perMessage(model);
map.put("xml", xmlStr);
/** 前提:其中xmlStr,是有Document 的document.asXML() 方法得到
* 作用:实现网络访问,先给服务器通过“POST”方式提交数据,再返回相应的数据
*/
public static String doPostSubmit(String url, Map<String, Object> params) {
HttpClient httpClient = new DefaultHttpClient();
HttpPost methodPost = new HttpPost(url);
// 将map中的数据一一放进List<NameValuePair>对象中。
// 之所以要做这一步骤,是因为HttpPost对象的setEntity()方法只接收List<NameValuePair>对象作为参数。
List<NameValuePair> list = new ArrayList<NameValuePair>();
for (Map.Entry<String, Object> entry : params.entrySet()) {
list.add(new BasicNameValuePair(entry.getKey(), entry.getValue()
.toString()));
}
try {
// 将表单中的数据先放进list对象中,然后再被放到UrlEncodedFormEntity对象中,
// 最后再通过HttpPost对象的setEntity()方法将这些表单数据传递到服务器中的request对象中。
methodPost.setEntity(new UrlEncodedFormEntity(list, "utf-8"));
HttpResponse response = httpClient.execute(methodPost);
if (response.getStatusLine().getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
// 借助EntityUtils的toByteArray()方法对
// HttpEntity对象进行处理,将entity对象中的内容处理成自己数组。
return EntityUtils.toString(entity);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}