HttpClient兩種調用方式


一.參數字符串

/**
* HttpClient請求接口
* @return 成功:音頻字節 失敗:null
*/
public static byte[] requestBaiduAudio(String url,Map<String, String> parameter) {

PostMethod post = null;
try {
HttpClient client = new HttpClient();

// 連接超時:10秒
client.getHttpConnectionManager().getParams().setConnectionTimeout(10 * 1000);

// 讀取超時:10 秒
client.getHttpConnectionManager().getParams().setSoTimeout(10 * 1000);

post = new PostMethod(url);
post.addRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");// 在頭文件中設置轉碼
post.setRequestHeader("Connection", "close");

NameValuePair[] data = new NameValuePair[parameter.size()];
Object s[] = parameter.keySet().toArray();
for (int i = 0; i < parameter.size(); i++) {
NameValuePair namevalue = new NameValuePair(s[i].toString(), parameter.get(s[i]));
data[i] = namevalue;
}

post.setRequestBody(data);

//發送請求
client.executeMethod(post);

//返回結果
byte[] responseBody = null;
Header contentType = post.getResponseHeader("Content-Type");
if(contentType.getValue().contains("audio/")){
responseBody = post.getResponseBody();
}else {
System.err.println("ERROR: content-type= " + contentType);
String res = post.getResponseBodyAsString();
System.err.println(res);
}

post.releaseConnection();// 釋放鏈接

return responseBody;
} catch (Exception e) {
if (post != null)
post.releaseConnection();// 釋放鏈接
}
return null;
}

 

二,參數為json

/**
* HttpClient Json 請求接口
* @return json
*/
public static JSONObject request(String url,JSONObject json) {
RequestConfig config = RequestConfig.custom()
.setConnectTimeout(8 * 1000) //設置連接超時時間,單位毫秒
.setSocketTimeout(8 * 1000) //請求獲取數據的超時時間,單位毫秒
.build();
CloseableHttpClient httpclient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
HttpPost post = new HttpPost(url);
StringEntity params = new StringEntity(json.toString(), "utf-8");
params.setContentType("text/html;charset=UTF-8");
params.setContentEncoding("UTF-8");
post.setEntity(params);
JSONObject response = null;
try {
HttpResponse res = httpclient.execute(post);
if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
String result = EntityUtils.toString(res.getEntity());// 返回json格式:
response = JSONObject.parseObject(result);
}else{
System.out.println(res.getStatusLine().getStatusCode());
}

} catch (Exception e) {
e.printStackTrace();
}

return response;
}

 

 

需要jar包: httpcore-4.4.10.jar,httpclient-4.5.2.jar,commons-httpclient-3.0.1.jar,commons-codec-1.9.jar

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM