首页 > 编程语言 >java调用第三方接口,请求方式 get,传参方式 param形式非json。

java调用第三方接口,请求方式 get,传参方式 param形式非json。

时间:2023-06-12 18:13:49浏览次数:52  
标签:传参 Map java get new org apache import

项目调用第三方接口,调用方式人家做了限制“请求方式 get  传参方式 param形式传参,非json”。所有有了下面的代码:

 

import com.alibaba.fastjson.JSONObject;
import com.spcp.platform.common.util.StringUtil;
import com.spcp.qypt.whpt.util.HttpClientUtil;
import org.springframework.web.bind.annotation.*;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.*;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URI;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public JSONObject dybdy( ) throws Exception {
// 接口需要的参数
Map<String, String> paramMap = new ConcurrentHashMap<>(2);
paramMap.put("jk", "123456");
String result = HttpClientUtil.doGet("对方地址", paramMap, null);
JSONObject jsonObject = JSONObject.parseObject(result);
return jsonObject;
}

public static String doGet(String url, Map<String, String> params, Map<String, String> headers) throws Exception {
// 参数
StringBuilder paramsBuilder = new StringBuilder(url);
if (params != null) {
if (!url.contains("?")) {
paramsBuilder.append("?");
}
List<NameValuePair> list = new ArrayList<>();
for (Map.Entry<String, String> stringStringEntry : params.entrySet()) {
list.add(new BasicNameValuePair(stringStringEntry.getKey(), stringStringEntry.getValue()));
}
paramsBuilder.append(EntityUtils.toString(new UrlEncodedFormEntity(list, Charset.forName("UTF-8"))));
}
HttpGet httpGet = new HttpGet(paramsBuilder.toString());
setHeader(headers, httpGet);
return execute(httpGet);
}

private static void setHeader(Map<String, String> headers, HttpRequestBase requestBase) {
if (headers == null) {
return;
}
for (Map.Entry<String, String> stringStringEntry : headers.entrySet()) {
requestBase.addHeader(stringStringEntry.getKey(), stringStringEntry.getValue());
}
}

private static String execute(HttpUriRequest httpUriRequest) throws Exception {
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
CloseableHttpResponse response = httpClient.execute(httpUriRequest);
// 请求成功状态
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()))) {
String tmp;
StringBuilder result = new StringBuilder();
while ((tmp = bufferedReader.readLine()) != null) {
result.append(tmp);
}
return result.toString();
}
}
}
return null;
}

public static String doPost(String url, Map<String, String> params, Map<String, String> headers) throws Exception {
HttpPost httpPost = new HttpPost(url);
if (params != null) {
List<NameValuePair> list = new ArrayList<>();
for (Map.Entry<String, String> stringStringEntry : params.entrySet()) {
list.add(new BasicNameValuePair(stringStringEntry.getKey(), stringStringEntry.getValue()));
}
httpPost.setEntity(new UrlEncodedFormEntity(list, Charset.forName("UTF-8")));
}
setHeader(headers, httpPost);
return execute(httpPost);
}



// 用到的jar包
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.14</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>

标签:传参,Map,java,get,new,org,apache,import
From: https://www.cnblogs.com/IWishRich/p/17475747.html

相关文章

  • java8随手记(包含idea连接远程分支出现Nothing to update问题)
    Steam流一、映射1.map()和.flatMap()map将数据放入集合中,返回Steam流中。例如:map集合{1,2,3},返回Steam流[a,b,c,{1,2,3}]flatMap将将集合中的数据,返回Steam流中.例如:flatMap集合{1,2,3},返回Steam流中[a,b,c,1,2,3]注意:add与addAll有同样的效果。   ......
  • java 中锁的定义
    引用资料按功能分类 读锁 readLock  写锁writeLock   自选锁  递归锁(可重入锁)按实现分类 乐观锁 当前环境读数据的多,写数据的少,并发读多,并发写少。因此,在读数据的时候,并不会给当前线程加锁,在写数据的时候,会进行判断当前的值与期望值时候相同,如果相同则进......
  • Java开发环境搭建
    以下内容均是来自于尚硅谷教育提供电子教材节选【存在部分修改】,方便个人阅读复习!如有侵权,联系删除!Java开发环境搭建(掌握)1什么是JDK、JREJDK(JavaDevelopmentKit):是Java程序开发工具包,包含JRE和开发人员使用的工具。**JRE**(JavaRuntimeEnvironment):是Java程序的......
  • Java获取本机IP
    原文链接可以使用getLocalHost命令:importjava.net.InetAddress;publicclassMain{publicstaticvoidmain(String[]args)throwsException{InetAddressaddr=InetAddress.getLocalHost();System.out.println("LocalHostAddress:"+addr......
  • Java中List集合的subList方法
        一、说明publicList<E>subList(intfromIndex,inttoIndex){...}作用:返回包含从索引fromIndex(包括)到索引toIndex(不包括)元素的List集合。 二、测试下面是关于subList的一些测试。首先,创建一个ArrayList对象,并添加一些元素。然后用subList方法获取一个新的集合。......
  • JavaSE入门准备
    JDKJavaDevelopmentKit(java开发者工具)包含JRE和JVMJREJavaRuntimeEnvironment(java运行环境)JVMJavaVirtualMachine(java虚拟机)Java文件编译与运行打开cmd进入到当前文件夹下javacjava编译java文件,会生成一个class文件javaclass运行class文件idea快捷......
  • java复习
    基本语法一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。类:类是一个模板,它描述一类对象的行为和状态。class对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。new方法:方法......
  • JAVA-IDE最新版本可用CODE
    干啥用的不言而喻了,准备开始白嫖最新的了嘛?发车~~文章目录一、百度网盘链接二、下载最新版20221.无脑安装下一步2.安装后,根据下载文件开始白嫖之路总结一、百度网盘链接链接:https://pan.baidu.com/s/1BePBfoFjFrU_HgOpIzHBqg?pwd=afu2提取码:afu2二、下载最新版20221.无脑安......
  • java实现dwg转pdf
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、无奈选择第二种二、jar引入1.jar地址2.使用jar,完成dwg转为pdf总结前言由于公司需要最近研究一个cad文件需要在浏览器中展示,经过研究发现大致有两种方式:1将.dwg转换为vds文件,就可以在web端展示......
  • 2020-07-03 java配置环境变量
    java开发,首先要安装JDK,并配置环境1 安装JDK(本人下载的安装包,无脑下一步,选择了下文件夹),安装完成截图如下2 开始配置环境变量右键我的电脑==高级系统设置==环境变量==系统变量中选择新建 (1)JAVA_HOME路径根据自己安装的写,路径到(bin 上一层)例如:笔者的jdk 的bin......