/**
* 获取API数据
*
* @param interfaceMethodName 接口方法名
* @param parameterMap 参数map
* @return Stirng
*/
public static JSONObject getResultJsonByHttpClient(
String interfaceMethodName, Map<String, Object> parameterMap) {
NameValuePair[] param;
if (parameterMap != null && parameterMap.size() > 0) {
param = new NameValuePair[parameterMap.size()];
int i = 0;
for (String key : parameterMap.keySet()) {
String value = parameterMap.get(key).toString();
param[i] = new NameValuePair(key, value);
i++;
}
} else param = new NameValuePair[0];
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod();
JSONObject resultJson = new JSONObject();
try {
postMethod.setPath("这是一个URL这是一个URL这是一个URL这是一个URL这是一个URL这是一个URL");
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
postMethod.addParameters(param);
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5 * 1000);
httpClient.getHttpConnectionManager().getParams().setSoTimeout(20 * 1000);
httpClient.executeMethod(postMethod);
InputStream responseStream = postMethod.getResponseBodyAsStream();
StringBuilder buffer = new StringBuilder();
InputStreamReader inputStreamReader = new InputStreamReader(responseStream, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
resultJson = JSONObject.parseObject(buffer.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
postMethod.releaseConnection();
}
return resultJson;
}
用httpclient通过postmethod对象获取返回值的话有时用 getResonseBodyAsString 返回结果会报出异常:
org.apache.commons.httpclient.HttpMethodBase getResponseBody
警告: Going to buffer response body of large or unknown size. Using getResponseBodyAsStream instead is recommended.
所以此处应该用getResponseBodyAsStream