一.參數字符串
/**
* 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