add HttpClient配置类、API结果对象、创建并配置HttpGet请求

master
yinq 2 months ago
parent 56bce25f96
commit 94709d3a74

@ -0,0 +1,80 @@
package hw.tagApi.common.config;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.impl.conn.SystemDefaultRoutePlanner;
import org.apache.http.impl.conn.DefaultProxyRoutePlanner;
import org.apache.http.HttpHost;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.conn.routing.HttpRoutePlanner;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.net.ProxySelector;
/**
* HttpClient
*
* @author Yinq
* @date 2025-04-15
*/
@Configuration
public class HttpClientConfig {
@Value("${http.client.connect-timeout:30000}")
private int connectTimeout;
@Value("${http.client.socket-timeout:30000}")
private int socketTimeout;
@Value("${http.client.connection-request-timeout:30000}")
private int connectionRequestTimeout;
@Value("${http.client.max-total:200}")
private int maxTotal;
@Value("${http.client.default-max-per-route:20}")
private int defaultMaxPerRoute;
@Value("${http.client.proxy-host:}")
private String proxyHost;
@Value("${http.client.proxy-port:0}")
private int proxyPort;
/**
* HttpClient
*/
@Bean
public CloseableHttpClient httpClient() {
// 创建连接池管理器
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(maxTotal);
connectionManager.setDefaultMaxPerRoute(defaultMaxPerRoute);
// 配置请求参数
RequestConfig requestConfig = RequestConfig.custom()
.setConnectTimeout(connectTimeout)
.setSocketTimeout(socketTimeout)
.setConnectionRequestTimeout(connectionRequestTimeout)
.build();
// 配置代理(如果需要)
HttpRoutePlanner routePlanner = null;
if (proxyHost != null && !proxyHost.isEmpty() && proxyPort > 0) {
HttpHost proxy = new HttpHost(proxyHost, proxyPort);
routePlanner = new DefaultProxyRoutePlanner(proxy);
} else {
routePlanner = new SystemDefaultRoutePlanner(ProxySelector.getDefault());
}
// 创建HttpClient
return HttpClients.custom()
.setConnectionManager(connectionManager)
.setDefaultRequestConfig(requestConfig)
.setRoutePlanner(routePlanner)
.build();
}
}

@ -26,45 +26,9 @@ public class ApiConstants {
*/
public static final String DATA_EXPORT = "30";
/**
*
*/
public static final String IMPORTING = "导入中";
/**
*
*/
public static final String SYSTEM_ERROR = "系统错误";
/**
*
*/
public static final String SEARCHING = "搜索中";
/**
*
*/
public static final String SEARCH_TIMEOUT = "搜索超时";
/**
*
*/
public static final String EXPORTING = "导出中";
public static final String SUCCESS = "SUCCESS";
public static final String FAILED = "FAILED";
public static class ImportStatus {
public static final String IMPORT_SUCCESS = "IMPORT_SUCCESS";
public static final String IMPORT_FAILED = "IMPORT_FAILED";
}
public static class ExportStatus {
public static final String EXPORT_SUCCESS = "EXPORT_SUCCESS";
public static final String EXPORT_FAILED = "EXPORT_FAILED";
}
public static class SearchStatus {
public static final String SEARCH_SUCCESS = "SEARCH_SUCCESS";
public static final String NO_RECORD = "NO_RECORD";
}
/** 导入状态 */
public static final String IMPORT_STATUS = "导入状态";
public static final String DESCRIPTION = "情况说明";
public static final String STATUS_IMPORTING = "导入中";
public static final String STATUS_SYSTEM_ERROR = "系统错误";
}

@ -0,0 +1,47 @@
package hw.tagApi.service.domain;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.List;
/**
* API
*
* @author Yinq
* @date 2025-04-15
*/
public class ApiResponse {
/** 功能代码 */
@JsonProperty("CASE")
private String caseCode;
/** 结果内容 */
@JsonProperty("RESULT")
private List<ApiContent> result;
public String getCaseCode() {
return caseCode;
}
public void setCaseCode(String caseCode) {
this.caseCode = caseCode;
}
public List<ApiContent> getResult() {
return result;
}
public void setResult(List<ApiContent> result) {
this.result = result;
}
@Override
public String toString() {
return "ApiResponse{" +
"CASE='" + caseCode + '\'' +
", RESULT=" + result +
'}';
}
}

@ -66,4 +66,12 @@ public interface HwTagRecordMapper
* @return
*/
public int deleteHwTagRecordByRIds(Long[] rIds);
/**
* TID
*
* @param record
* @return
*/
public int updateHwTagRecordByTID(HwTagRecord record);
}

@ -1,5 +1,9 @@
package hw.tagApi.service.service;
import hw.tagApi.service.domain.ApiContent;
import java.util.List;
/**
*
*
@ -16,12 +20,12 @@ public interface IKDocsService {
String getSystemStatus();
/**
*
* List
*
* @param data
* @param content
* @return
*/
String importData(String data);
List<ApiContent> importDataList(List<ApiContent> content);
/**
*

@ -0,0 +1,73 @@
package hw.tagApi.service.utils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
public class httpClientUtils {
private static final Logger log = LoggerFactory.getLogger(httpClientUtils.class);
/**
* HttpGet
* @param url URL
* @return HttpGet
*/
public static HttpGet createHttpGetRequest(String url) {
HttpGet httpGet = new HttpGet(url);
// 设置请求头
httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36");
httpGet.setHeader("Accept", "*/*");
httpGet.setHeader("Accept-Language", "zh-CN,zh;q=0.9,en;q=0.8");
httpGet.setHeader("Connection", "keep-alive");
return httpGet;
}
/**
* URL
* @param httpClient HTTP
* @param url URL
* @return null
*/
public static byte[] getByteArrayFromUrl(CloseableHttpClient httpClient, String url) {
log.info("开始从URL下载文件: {}", url);
HttpGet httpGet = createHttpGetRequest(url);
try (CloseableHttpResponse response = httpClient.execute(httpGet)) {
// 获取响应状态码
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != 200) {
log.error("获取文件失败,响应码: {}", statusCode);
return null;
}
// 获取响应实体
HttpEntity entity = response.getEntity();
if (entity == null) {
log.error("无法获取响应实体");
return null;
}
// 将响应实体转换为字节数组
byte[] fileData = EntityUtils.toByteArray(entity);
if (fileData.length == 0) {
log.error("获取到的文件为空");
return null;
}
log.info("成功获取文件,大小: {} 字节", fileData.length);
return fileData;
} catch (IOException e) {
log.error("获取文件时发生错误: {}", e.getMessage(), e);
return null;
}
}
}

@ -134,6 +134,32 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where r_id = #{rId}
</update>
<update id="updateHwTagRecordByTID" parameterType="HwTagRecord">
update hw_tag_record
<trim prefix="SET" suffixOverrides=",">
<if test="epc != null and epc != ''">epc = #{epc},</if>
<if test="password != null">password = #{password},</if>
<if test="orderCode != null">order_code = #{orderCode},</if>
<if test="batchNumber != null">batch_number = #{batchNumber},</if>
<if test="tagSequence != null">tag_sequence = #{tagSequence},</if>
<if test="totalQuantity != null">total_quantity = #{totalQuantity},</if>
<if test="tagBatch != null">tag_batch = #{tagBatch},</if>
<if test="modelCode != null">model_code = #{modelCode},</if>
<if test="processingTime != null">processing_time = #{processingTime},</if>
<if test="operatorId != null">operator_id = #{operatorId},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="fields1 != null">fields_1 = #{fields1},</if>
<if test="fields2 != null">fields_2 = #{fields2},</if>
<if test="fields3 != null">fields_3 = #{fields3},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where t_id = #{tId}
</update>
<delete id="deleteHwTagRecordByRId" parameterType="Long">
delete from hw_tag_record where r_id = #{rId}
</delete>

Loading…
Cancel
Save