一、利用httpclient来字符串参数(url是第三方接口,不带参数,如:http://192.168.16.200:8081/faceInfo/list,param是url后面所要带的参数)

public static JSONObject getHttpResponseJson(String url,Map<String,String> param){
CloseableHttpClient httpclient = null;
CloseableHttpResponse response = null;
JSONObject jsonObject = null; try {
//请求发起客户端
httpclient = HttpClients.createDefault();
//参数集合
List postParams = new ArrayList();
//遍历参数并添加到集合
for(Map.Entry<String, String> entry:param.entrySet()){
postParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
//通过post方式访问
HttpPost post = new HttpPost(url);
HttpEntity paramEntity = new UrlEncodedFormEntity(postParams,"UTF-8");
post.setEntity(paramEntity);
response = httpclient.execute(post);
HttpEntity valueEntity = response.getEntity();
String content = EntityUtils.toString(valueEntity);
jsonObject = JSONObject.fromObject(content); return jsonObject;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(httpclient != null){
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(response != null){
try {
response.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return jsonObject;
}

二、利用httpclient来同时上传文件和其他字符串参数(postUrl请求地址,第三方接口,不带参数,如:http://192.168.16.200:8081/faceInfo/list,filePathParam封装文件的上传路径,param封装参数)

public static String getHttpResponseString(String postUrl,Map<String,String> filePathParam,Map<String,String> param){
//1:创建一个httpclient对象
HttpClient httpclient = new DefaultHttpClient();
Charset charset = Charset.forName("UTF-8");//设置编码
try {
//2:创建http的发送方式对象,是GET还是post
HttpPost httppost = new HttpPost(postUrl); //3:创建要发送的实体,就是key-value的这种结构,借助于这个类,可以实现文件和参数同时上传
MultipartEntity reqEntity = new MultipartEntity(); if (filePathParam != null) {
//遍历图片并添加到MultipartEntity实体中
for(Map.Entry<String, String> entry:filePathParam.entrySet()){
FileBody fileContent = new FileBody(new File(entry.getValue()));
reqEntity.addPart(entry.getKey(),fileContent);
}
} if (param != null) {
//遍历参数并添加到MultipartEntity实体中
for(Map.Entry<String, String> entry:param.entrySet()){
StringBody content = new StringBody(entry.getValue(),charset);
reqEntity.addPart(entry.getKey(), content);
}
} httppost.setEntity(reqEntity); //4:执行httppost对象,从而获得信息
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity(); //获得返回来的信息,转化为字符串string
String resString = EntityUtils.toString(resEntity);
return resString; } catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try { httpclient.getConnectionManager().shutdown(); } catch (Exception ignore) {}
}
return null;
}

java代码调用第三方接口的更多相关文章

  1. java springboot调用第三方接口 借助hutoool工具类 爬坑

    楼主是个后端小白一枚,之前没接触过后端,只学了java基本语法,还是在学校老师教的,学的很浅,什么ssh.ssm框架都没有学,最近在自学spring boot,看书学也看不是很懂,就在b站上看教学视频 ...

  2. Java调用第三方接口示范

    在项目开发中经常会遇到调用第三方接口的情况,比如说调用第三方的天气预报接口. 使用流程[1]准备工作:在项目的工具包下导入HttpClientUtil这个工具类,或者也可以使用Spring框架的res ...

  3. Java代码调用服务器上的Shell脚本

    Java代码调用服务器上的Shell脚本 这里主要是因为我们报表平台有用到用户手工录入的数据作为结果数据且需要纳入saiku去展示 如我们所知,saiku不会自动刷新,所以需要在数据更新接口中调用服务 ...

  4. Java代码调用Oracle的存储过程,存储函数和包

    Java代码调用存储过程和存储函数要使用CallableStatement接口 查看API文档: 上代码: java代码调用如下的存储过程和函数: 查询某个员工的姓名  月薪 职位 create or ...

  5. java代码调用数据库存储过程

    由于前边有写java代码调用数据库,感觉应该把java调用存储过程也写一下,所以笔者补充该篇! package testSpring; import java.sql.CallableStatemen ...

  6. Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件

    本文通过Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件,代码如下: import java.io.File; import java.io.IOException; import ...

  7. Java调用第三方接口工具类(json、form)

    1.JSON值访问 /** * 调用对方接口方法 * @param path 对方或第三方提供的路径 * @param data 向对方或第三方发送的数据,大多数情况下给对方发送JSON数据让对方解析 ...

  8. SpringMVC 结合HttpClient调用第三方接口实现

    使用HttpClient 依赖jar包 1:commons-httpclient-3.0.jar 2:commons-logging-1.1.1.jar 3:commons-codec-1.6.jar ...

  9. 使用WebClient调用第三方接口

    需要调用一个第三方接口,传参返回数据 本来是很简单的一个需求,搞了一天没整好 首先在POSTMAN中测试没有问题,但是使用jquery ajax在前台就会涉及到跨域 虽然设置了 无论怎么写都会报错 C ...

随机推荐

  1. iOS Password AutoFill开发指南

    转载请标明来源:https://www.cnblogs.com/zhanggui/p/9431950.html 引言 在<iPhone User Guide for iOS 11.4>这本 ...

  2. 模块简介:(logging)(re)(subprocess)

    ''' logging模块: logging的日志可以分为 debug():Detailed information, typically of interest only when diagnosi ...

  3. Linux下的快速配置虚拟环境virtualenvwrapper

    一 安装包 pip3 install virtualenv virtualenvwrapper 二 设置linux的用户个人配置文件~/.bashrc WORKON_HOME=~/Envs 设置vir ...

  4. HashMap线程不安全的体现

    前言:我们都知道HashMap是线程不安全的,在多线程环境中不建议使用,但是其线程不安全主要体现在什么地方呢,本文将对该问题进行解密. 1.jdk1.7中的HashMap 在jdk1.8中对HashM ...

  5. AI GMM

    GMM(Gaussian Mixture Model,高斯混合模型)通常用于聚类(也用于密度估计),数据是由k个高斯分布生成,每个分布表示一个类. 期望最大(Expectation Maximizat ...

  6. CF452F Permutations/Luogu2757 等差子序列 树状数组、Hash

    传送门--Luogu 传送门--Codeforces 如果存在长度\(>3\)的等差子序列,那么一定存在长度\(=3\)的等差子序列,所以我们只需要找长度为\(3\)的等差子序列.可以枚举等差子 ...

  7. 私有云方案——利用阿里云云解析实现DDNS

            各位都是程序员,工作中是不是遇到个类似情况.在家里研究的一些开源代码或写的一些demo或试验代码,在工作中正好需要参考一下,但是在家里的电脑上.           虽然这些都可以用云 ...

  8. .Net Core应用框架Util介绍(四)

    上篇介绍了Util Angular Demo的目录结构和运行机制,本文介绍Util封装Angular的基本手法及背后的动机. Angular应用由Ts和Html两部分构成,本文介绍第一部分. Angu ...

  9. jQuery文件分片上传

    前端代码: <input type="file" id="file6" multiple> <button type="button ...

  10. C#中字符串的字面值(转义序列)

    在程序开发中,经常会碰到在字符串中字面值中使用转义序列,下面表格收集了下转义序列的完整列表,以便大家查看引用: 转义序列列表 转义序列 产生的字符 字符的Unicode值 \' 单引号 0x0027 ...