一.参数字符串

/**
* 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

HttpClient两种调用方式的更多相关文章

  1. c++のdll两种调用方式

    调用DLL有两种方法:静态调用和动态调用. (一).静态调用其步骤如下: 1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下; 2.把你的youApp. ...

  2. java 调用wsdl的webservice接口 两种调用方式

    关于wsdl接口对于我来说是比较头疼的 基本没搞过.一脸懵 就在网上搜 看着写的都很好到我这就不好使了,非常蓝瘦.谨以此随笔纪念我这半个月踩过的坑... 背景:短短两周除了普通开发外我就接到了两个we ...

  3. GET 和 POST两种调用方式

    http://www.cnblogs.com/java-pan/archive/2012/02/26/httpclient-post-get.html 通过get和post方式调用http接口,总结如 ...

  4. html5 中的 css样式单 的 两种调用方式的区别

    在 html5 中 使用 css 样式单的方式 有4种: 1.链接外部样式文件:将样式文件 彻底与 html 文档分离,样式文件需要额外引入,这种情况下 一批样式 可以控制多份文档.对于好多文件都共有 ...

  5. webservice的两种调用方式

    如下 using ConsoleApplication1.TestWebService; using System; using System.Collections; using System.Co ...

  6. Web APi之认证(Authentication)两种实现方式【二】(十三)

    前言 上一节我们详细讲解了认证及其基本信息,这一节我们通过两种不同方式来实现认证,并且分析如何合理的利用这两种方式,文中涉及到的基础知识,请参看上一篇文中,就不再叙述废话. 序言 对于所谓的认证说到底 ...

  7. Android中Fragment与Activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如 ...

  8. JavaScript 函数的两种声明方式

    1.函数声明的方式 JavaScript声明函数有两种选择:函数声明法,表达式定义法. 函数声明法 function sum (num1 ,num2){ return num1+num2 } 表达式定 ...

  9. Redis两种持久化方式(RDB&AOF)

    爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...

随机推荐

  1. (转)从斐波那契数列看Java方法的调用过程

    斐波那契数列的定义: 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家列安纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔 ...

  2. deep_learning_Activate_method

    常见的激活函数有sigmoid.tanh和relu三种非线性函数,其数学表达式分别为: sigmoid: y = 1/(1 + e-x) tanh: y = (ex - e-x)/(ex + e-x) ...

  3. 【C/C++】内存对齐规则和实战

    内存对齐规则和实战 这篇文章是我的平时的一个笔记修改后来的.这里主要介绍一下内存对齐的规则,以及提供一些实战一下.几篇我觉得比较好的详细的介绍内存对齐的作用什么的博文会在文末附上. 规则 在开始实战前 ...

  4. three.js之让物体动起来方式(二)移动物体

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. css 模块化

    什么是css模块化思想?(what) 为了理解css模块化思想,我们首先了解下,什么是模块化,在百度百科上的解释是,在系统的结构中,模块是可组合.分解和更换的单元.模块化是一种处理复杂系统分解成为更好 ...

  6. Android异常与性能优化相关面试问题-其他优化面试问题详解

    Android不用静态变量存储数据: 静态变量等数据由于进程已经被杀死而被初始化.在Android中应用进程不是安全的,因为它会有系统给kill掉,但是在实际中可能会有这样的一个假象:当app被杀掉之 ...

  7. 解决mysql提示服务无法启动问题

    1.管理员权限打开命令,进入mysql下bin文件夹 删除根目录下data文件夹没有不用管,重新安装 2. ---------------------------------------------- ...

  8. Linux/Ubantu 安装 idea

    wget 使用 wget url (这里的url就是你要下载idea的网站) 在idea官网中 找到 direct link 右键复制链接 在 linux 中 打开 终端命令窗口 (Ctrl +Alt ...

  9. buuctf@ciscn_2019_n_1

    from pwn import * #io=process('./ciscn_2019_n_1') io=remote('node3.buuoj.cn',28216) io.sendline(0x38 ...

  10. 【转】分布式文件系统FastDFS原理介绍

    什么是FastDFS? FastDFS是一个开源的轻量级分布式文件系统.它解决了大数据量存储和负载均衡等问题.特别适合以中小文件(建议范围:4KB < file_size <500MB)为 ...