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

发布时间 2023-06-12 18:04:01作者: leocat

项目调用第三方接口,调用方式人家做了限制“请求方式 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>