java发送http

文章描述了如何在Java中使用OkHttp库进行HTTPGET和POST请求,并利用Fastjson库解析返回的JSON数据。作者提供了getTrackList方法作为示例,展示了如何发送POST请求获取数据并处理返回的JSON对象。
摘要由CSDN通过智能技术生成
public static String httpGet(String url) {
    LogUtils.info("发送get请求url={}",url);
    Request requestData = new Request.Builder()
            .url(url)
            .get()
            .build();
    Response responseData = null;
    String result = "";
    try {
        OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
                .build();
        responseData = okHttpClient.newCall(requestData).execute();
        result =  responseData.body().string();
        LogUtils.info("发送post请求url={},返回结果={}",url,result);
        return result;
    } catch (IOException e) {
        LogUtils.error("发送get请求失败url={}",url, e);
    }
    return null;
}
public Object getTrackList(String loanId) {
        MediaType mediaType = MediaType.parse("application/json");
        Map param = new HashMap();
        param.put("loanId",loanId);
        okhttp3.RequestBody body = okhttp3.RequestBody.create(mediaType, param.toString());
        Request request = new Request.Builder()
                .url("http://getRepays")
                .post(body)
                .build();
        try {
            Response response = okHttpClient.newCall(request).execute();
            okhttp3.ResponseBody tokenBody = response.body();
            JSONObject jsonObject = new JSONObject(tokenBody.string());
            String TrackList = jsonObject.optString("list", "");
            Map<String, Object> result = JsonUtils.toMap(response.body().string());
            Map<String, Object> data = JsonUtils.toMap((String) result.get("list"));
            JSONArray listDate = (JSONArray) data.get("list");
            if (CollectionUtils.isNotEmpty(listDate)) {
                Iterator<Object> iterator = listDate.iterator();
                while (iterator.hasNext()) {
                    com.alibaba.fastjson.JSONObject objList = (com.alibaba.fastjson.JSONObject) iterator.next();
                    //对象-objList.get("planVoucher").toString()
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }
public class HttpGet {
    @Autowired
    OkHttpClient okHttpClient;

    private static final TypeReference<Map<String, Object>> MAP_TYPE_REFERENCE = new TypeReference<Map<String, Object>>(){} ;
    private static final TypeReference<Map<String, String>> MAP_STRING_REFERENCE = new TypeReference<Map<String, String>>(){} ;
    public static Map<String, Object> toMap(String json) {
        return JSON.parseObject(json, MAP_TYPE_REFERENCE) ;
    }


    //示例
//    public static void main(String[] args) {
//        String jsonString = "{\"key\": \"value\"}";
//        JSONObject jsonObject = JSONObject.parseObject(jsonString);
//        String value = jsonObject.getString("key");
//        System.out.println(value);
//    }

    public Object getTrackList(String loanId) {
        MediaType mediaType = MediaType.parse("application/json");
        Map param = new HashMap();
        param.put("loanId",loanId);
        okhttp3.RequestBody body = okhttp3.RequestBody.create(mediaType, param.toString());
        Request request = new Request.Builder()
                .url("http://getRepays")
                .post(body)
                .build();
        try {
            Response response = okHttpClient.newCall(request).execute();
            okhttp3.ResponseBody tokenBody = response.body();

//            JSONObject jsonObject = new JSONObject(tokenBody.string());
//            String TrackList = jsonObject.getString("list", "");

            JSONObject jsonObject = JSONObject.parseObject(tokenBody.string());
            String TrackList = jsonObject.getString("list");

            Map<String, Object> result = toMap(response.body().string());

            Map<String, Object> data = toMap((String) result.get("list"));
            JSONArray listDate = (JSONArray) data.get("list");
            if (CollectionUtils.isNotEmpty(listDate)) {
                Iterator<Object> iterator = listDate.iterator();
                while (iterator.hasNext()) {
                    JSONObject objList = (JSONObject) iterator.next();
                        //对象:objList.get("repayStatus").toString()
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }


    public static String httpGet(String url) {
//        LogUtils.info("发送get请求url={}",url);
        Request requestData = new Request.Builder()
                .url(url)
                .get()
                .build();
        Response responseData = null;
        String result = "";
        try {
            OkHttpClient okHttpClient = new OkHttpClient().newBuilder()
                    .build();
            responseData = okHttpClient.newCall(requestData).execute();
            result =  responseData.body().string();
//            LogUtils.info("发送post请求url={},返回结果={}",url,result);
            return result;
        } catch (IOException e) {
//            LogUtils.error("发送get请求失败url={}",url, e);
        }
        return null;
    }


    public static void main(String[] args) {
        String url= "https://jsonplaceholder.typicode.com/posts";
        String s = HttpGet.httpGet(url);
// 将字符串转换为 JSONArray
        JSONArray jsonArray = JSON.parseArray(s);
        ArrayList<String> list1 = new ArrayList<>();
        ArrayList<String> list2 = new ArrayList<>();
        Map<Integer, Object> map1 = new HashMap<>();
        Map<Integer, Object> map2 = new HashMap<>();

        ArrayList<Consult> consults = new ArrayList<>();


        // 方式一:遍历 JSONArray 中的每个元素
        for (int i = 0; i < jsonArray.size(); i++) {
            //获取每个元素
            JSONObject item = jsonArray.getJSONObject(i);
            // 获取元素的属性
            list1.add(item.getString("title"));
            map1.put(Integer.parseInt(item.getString("id")),item.getString("title"));
            map2.put(Integer.parseInt(item.getString("id")),item);

            Consult consult = new Consult();
            consult.setTitle(item.getString("id"));
            consult.setContent(item.getString("title"));
            consults.add(consult);

        }
        // 方式二:遍历 JSONArray 中的每个元素
        if (CollectionUtils.isNotEmpty(jsonArray)) {
            Iterator<Object> iterator = jsonArray.iterator();
            while (iterator.hasNext()) {
                JSONObject objList = (JSONObject) iterator.next();
                list2.add(objList.get("id").toString());
            }
        }

        System.out.println("结果list1:"+list1);
        System.out.println("结果list2:"+list2);
        System.out.println("结果map1:"+map1);
        System.out.println("结果map2:"+map2);



    }
    public static Object testHttp(String url){
        String resultStr = httpGet(url);
        // 将字符串转换为 Map 对象
        Map<String, Object> result = JSON.parseObject(resultStr, Map.class);
        //获取集合数据字符串
        String listStr = (String) result.get("list");
        //集合字符串转为map
        Map<String, Object> data = JSON.parseObject(listStr, Map.class);

        //核心数据转为集合
        JSONArray listDate = (JSONArray) data.get("list");
        if (CollectionUtils.isNotEmpty(listDate)) {
            //使用迭代器的方式遍历集合
            Iterator<Object> iterator = listDate.iterator();
            while (iterator.hasNext()) {
                //获取当前对象
                JSONObject objList = (JSONObject) iterator.next();
//                    Record record = new Record();
//                    record .setip(objList.get("id").toString());
            }
        }

        return data;
    }
}

依赖

        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>3.14.9</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.78</version>
        </dependency>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值