【java调取第三方接口,获取数据并保存至数据库】

java调取第三方接口,获取数据并保存至数据库

如果需要添加token
httpGet.addHeader(“Authorization”,token);
httpGet.setHeader(“Authorization”,token);

httpClient

@Override
    public void doPost() {
        // 创建Httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        String resultString = "";
        String url = "http://xxx.xxx.xxx:8080/xxx/xxx/xxx";
   
        List<SaveProjectEntityDTO> list = new ArrayList<>();
        try {
            // 创建Http Post请求
            HttpPost httpPost = new HttpPost(url);
            httpPost.setHeader("Content-Type", "application/json;charset=utf-8");
            
            //post传参数
            JSONObject param2= new JSONObject();
            param2.put("key","value");
            param2.put("key1", "value1");
            System.out.println(param2);
            httpPost.setEntity(new StringEntity(param2));
            // 执行http请求
            response = httpClient.execute(httpPost);
            //resultString 就是调取第三方接口后给的返回值
            resultString = EntityUtils.toString(response.getEntity(), "utf-8");
            //使用JSONObject.parseObject方法将字符串转化为JsonResult 实体类(JsonResult 类中的字段一定要对应返回值类型)
           JsonResult jsonResult = JSONObject.parseObject(resultString, JsonResult .class);
            //应为返回值中存在code,msg,success等信息,所以再使用JSONObject.parseArray方法将data中的数组取出来保存
            list = JSONObject.parseArray(jsonResult.getData(),SaveProjectEntityDTO.class);
            List<FwqProject> fwqProjects = new ArrayList<>();
            for (SaveProjectEntityDTO saveProjectEntityDTO : list){
                FwqProject fwqProject = new FwqProject();
                fwqProject.setzId(saveProjectEntityDTO.getId());
                fwqProject.setName(saveProjectEntityDTO.getName());
                fwqProject.setStatus(saveProjectEntityDTO.getStatus());
                fwqProjects.add(fwqProject);
            }
            fwqProjectService.saveOrUpdateBatch(fwqProjects);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                response.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

HttpEntity

 String url="xxxxxx";
        HttpHeaders headers = new HttpHeaders();
        JSONObject param2= new JSONObject();
        param2.put("key1","value1");
        param2.put("key2", "value2");
        headers.setContentType(MediaType.APPLICATION_JSON);
        headers.set("Authorization","token");
        HttpEntity entity = new HttpEntity<>(param2,headers);
        RestTemplate restTemplate = new RestTemplate();
        ResponseEntity response = restTemplate.exchange(url, HttpMethod.POST,entity,String.class);
        System.out.println(response.getBody());
        JsonResult jsonResult = JSONObject.parseObject(response.getBody().toString(), JsonResult.class);

        if(jsonResult.getData() instanceof JSONObject){
            Objectt o= JSONObject.parseObject((jsonResult.getData()).toString(), Object.class);
            System.out.println(o);
        }else {
            List<Objectt > os = JSONObject.parseArray(( jsonResult.getData()).toString(), Objectt.class);
            System.out.println(tUsers);

        }

JsonResult

package com.example.swagger.entity.result;

import com.example.swagger.entity.enums.ResultCodeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/**
 * 全局统一返回结果类
 */
@Data
@ApiModel(value = "全局统一返回结果")
public class JsonResult<T> {

    @ApiModelProperty(value = "返回码")
    private Integer code;

    @ApiModelProperty(value = "返回消息")
    private String message;

    @ApiModelProperty(value = "返回数据")
    private T data;

    public JsonResult() {
    }

    protected static <T> JsonResult<T> build(T data) {
        JsonResult<T> jsonResult = new JsonResult<T>();
        if (data != null) {
            jsonResult.setData(data);
        }
        return jsonResult;
    }

    public static <T> JsonResult<T> build(T data, ResultCodeEnum resultCodeEnum) {
        JsonResult<T> jsonResult = build(data);
        jsonResult.setCode(resultCodeEnum.getCode());
        jsonResult.setMessage(resultCodeEnum.getMessage());
        return jsonResult;
    }

    public static <T> JsonResult<T> build(Integer code, String message) {
        JsonResult<T> jsonResult = build(null);
        jsonResult.setCode(code);
        jsonResult.setMessage(message);
        return jsonResult;
    }

    public static <T> JsonResult<T> ok() {
        return JsonResult.ok(null);
    }

    /**
     * 操作成功
     *
     * @param data
     * @param <T>
     * @return
     */
    public static <T> JsonResult<T> ok(T data) {
        JsonResult<T> jsonResult = build(data);
        return build(data, ResultCodeEnum.SUCCESS);
    }

    public static <T> JsonResult<T> fail() {
        return JsonResult.fail(null);
    }

    /**
     * 操作失败
     *
     * @param data
     * @param <T>
     * @return
     */
    public static <T> JsonResult<T> fail(T data) {
        JsonResult<T> jsonResult = build(data);
        return build(data, ResultCodeEnum.FAIL);
    }

    public JsonResult<T> message(String msg) {
        this.setMessage(msg);
        return this;
    }

    public JsonResult<T> code(Integer code) {
        this.setCode(code);
        return this;
    }

    public boolean isOk() {
        if (this.getCode().intValue() == ResultCodeEnum.SUCCESS.getCode().intValue()) {
            return true;
        }
        return false;
    }

}

JSONObject.parseObject,JSONObject.parseArray

@Test
    public void test1(){
        String text = "{\"mode\":\"满减打折\",\"details\":[{\"order\":0,\"discountPercent\":10,\"min\":0,\"max\":100},{\"order\":1,\"discountPercent\":15,\"min\":100,\"max\":500}]}";
        JSONObject jsonObject = JSONObject.parseObject(text);
        String arrayStr = jsonObject.getString("details");
        List<Discount> list = JSONObject.parseArray(arrayStr,Discount.class);
        for(Discount discount:list){
            System.out.println(discount.toString()+"-------------");
        }
    }

    @Test
    public void test2(){
        String text = "{\"mode\":\"满减打折\",\"details\":[{\"order\":0,\"discountPercent\":10,\"min\":0,\"max\":100},{\"order\":1,\"discountPercent\":15,\"min\":100,\"max\":500}]}";
        JSONObject jsonObject = JSONObject.parseObject(text);
        JSONArray jsonArray = jsonObject.getJSONArray("details");
        for(int i = 0; i< jsonArray.size(); i++){
            // 写法一:
            // Discount discount = (Discount) jsonArray.get(i);
            // 写法二:
            JSONObject json = jsonArray.getJSONObject(i);
            Discount discount = json.toJavaObject(Discount.class);
            System.out.println(discount.toString()+"------------------");
        }
    }

fastjson判断一个json是jsonArray还是jsonObject几种方式


```java
   Object object = JSON.parse(dataStr);
        if (object instanceof JSONArray) {
            System.out.println("我是jsonArray");
        } else {
            System.out.println("我是jsonObject");
        }


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中调用第三方接口需要使用 Java 提供的网络请求 API,通常有两种方式: 1. 使用 HttpURLConnection 类发送 HTTP 请求 HttpURLConnection 是 Java 中用于发送 HTTP 请求的类,可以使用此类发送 GET、POST、PUT、DELETE 等请求。具体步骤如下: ```java // 创建 URL 对象 URL url = new URL("http://example.com/api"); // 打开连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); // 设置请求方法 conn.setRequestMethod("GET"); // 设置请求头 conn.setRequestProperty("Content-Type", "application/json"); // 发送请求 conn.connect(); // 获取响应码 int responseCode = conn.getResponseCode(); // 获取响应数据 InputStream inputStream = conn.getInputStream(); // 读取响应数据 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); inputStream.close(); // 关闭连接 conn.disconnect(); // 处理响应数据 System.out.println(response.toString()); ``` 2. 使用 HttpClient 库发送 HTTP 请求 HttpClient 是 Apache 提供的开源 HTTP 客户端库,可以用于发送 HTTP 请求,支持 GET、POST、PUT、DELETE 等请求。具体步骤如下: ```java // 创建 HttpClient 对象 CloseableHttpClient httpClient = HttpClients.createDefault(); // 创建 HttpGet 或 HttpPost 对象 HttpGet httpGet = new HttpGet("http://example.com/api"); // 设置请求头 httpGet.setHeader("Content-Type", "application/json"); // 发送请求 CloseableHttpResponse response = httpClient.execute(httpGet); // 获取响应数据 HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); // 关闭响应和连接 response.close(); httpClient.close(); // 处理响应数据 System.out.println(result); ``` 需要注意的是,在调用第三方接口时,需要遵循接口提供方的协议和规范,如授权、请求频率等限制。同时,为了保证数据安全,建议将敏感信息加密传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值