From 09d997f1c5bd70cd06551afca59cfe5dce292828 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E5=82=85=E5=93=A5?= <184172133@qq.com> Date: Sat, 14 Oct 2023 16:54:16 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9AHTTP=20=E6=A1=86=E6=9E=B6=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xfg/dev/tech/test/HttpClientTest.java | 116 ++++++++++++++++++ .../xfg/dev/tech/test/OKHttpTest.java | 67 ++++++++++ .../xfg/dev/tech/test/Retrofit2Test.java | 81 ++++++++++++ 3 files changed, 264 insertions(+) create mode 100644 xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/HttpClientTest.java create mode 100644 xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/OKHttpTest.java create mode 100644 xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/Retrofit2Test.java diff --git a/xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/HttpClientTest.java b/xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/HttpClientTest.java new file mode 100644 index 0000000..d5443f6 --- /dev/null +++ b/xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/HttpClientTest.java @@ -0,0 +1,116 @@ +package cn.bugstack.xfg.dev.tech.test; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.util.EntityUtils; +import org.junit.Test; + +import java.io.IOException; + +/** + * @author Fuzhengwei bugstack.cn @小傅哥 + * @description 单元测试 + * + * org.apache.httpcomponents + * httpclient + * 4.5.14 + * + * + * org.apache.httpcomponents + * httpmime + * 4.5.10 + * + * @create 2023-10-14 10:08 + */ +@Slf4j +public class HttpClientTest { + + @Test + public void test_httpClient_comments(){ + CloseableHttpClient httpClient = HttpClientBuilder.create().build(); + + HttpPost httpPost = new HttpPost("https://api.zsxq.com/v2/topics/188451221521142/comments"); + + httpPost.setHeader("Accept-Encoding", "deflate, gzip"); + httpPost.setHeader("accept", "application/json, text/plain, */*"); + httpPost.setHeader("accept-language", "zh-CN,zh;q=0.9,en;q=0.8"); + httpPost.setHeader("authority", "api.zsxq.com"); + httpPost.setHeader("content-type", "application/json"); + httpPost.setHeader("cookie", "zsxq_access_token=86EB233E-BBD0-1E3C-941D-817CA1303C87_9D76421394C6F474"); + httpPost.setHeader("dnt", "1"); + httpPost.setHeader("origin", "https://wx.zsxq.com"); + httpPost.setHeader("referer", "https://wx.zsxq.com/"); + httpPost.setHeader("sec-ch-ua", "\"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\""); + httpPost.setHeader("sec-ch-ua-mobile", "?0"); + httpPost.setHeader("sec-ch-ua-platform", "\"macOS\""); + httpPost.setHeader("sec-fetch-dest", "empty"); + httpPost.setHeader("sec-fetch-mode", "cors"); + httpPost.setHeader("sec-fetch-site", "same-site"); + httpPost.setHeader("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"); + httpPost.setHeader("x-request-id", "162ae5f17-2123-4ae3-67df-8b9775414e0"); + httpPost.setHeader("x-signature", "698895e3ec4e651128b3d16755546bd2bc659687"); + httpPost.setHeader("x-timestamp", "1697257286"); + httpPost.setHeader("x-version", "2.45.0"); + + String requestBody = "{\"req_data\":{\"text\":\"chatglmt 回答测试\\n\",\"image_ids\":[],\"mentioned_user_ids\":[]}}"; + try { + httpPost.setEntity(new StringEntity(requestBody)); + + HttpResponse response = httpClient.execute(httpPost); + HttpEntity entity = response.getEntity(); + String responseString = EntityUtils.toString(entity); + System.out.println(responseString); + + // 关闭连接 + httpClient.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + @Test + public void test_httpClient() throws IOException { + CloseableHttpClient httpClient = HttpClientBuilder.create().build(); + + HttpGet get = new HttpGet("https://api.zsxq.com/v2/groups/28885518425541/topics?scope=all&count=20"); + + get.addHeader("Accept-Encoding", "deflate, gzip"); + get.addHeader("accept", "application/json, text/plain, */*"); + get.addHeader("accept-language", "zh-CN,zh;q=0.9,en;q=0.8"); + get.addHeader("authority", "api.zsxq.com"); + get.addHeader("cookie", "zsxq_access_token=86EB233E-BBD0-1E3C-941D-817CA1303C87_9D76421394C6F474"); + get.addHeader("dnt", "1"); + get.addHeader("origin", "https://wx.zsxq.com"); + get.addHeader("referer", "https://wx.zsxq.com/"); + get.addHeader("sec-ch-ua", "\"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\""); + get.addHeader("sec-ch-ua-mobile", "?0"); + get.addHeader("sec-ch-ua-platform", "\"macOS\""); + get.addHeader("sec-fetch-dest", "empty"); + get.addHeader("sec-fetch-mode", "cors"); + get.addHeader("sec-fetch-site", "same-site"); + get.addHeader("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"); + get.addHeader("x-request-id", "372177b46-4e7d-9373-d891-98a22adaeb7"); + get.addHeader("x-signature", "32b39b5d1af5995e3b5022e58a8d8f23cd427434"); + get.addHeader("x-timestamp", "1697249698"); + get.addHeader("x-version", "2.45.0"); + + CloseableHttpResponse response = httpClient.execute(get); + if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { + String jsonStr = EntityUtils.toString(response.getEntity()); + String jsonObj = StringEscapeUtils.unescapeJava(jsonStr); + log.info("拉取数据。jsonStr:{}", jsonObj); + } else { + throw new RuntimeException("Err Code is " + response.getStatusLine().getStatusCode()); + } + } + +} diff --git a/xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/OKHttpTest.java b/xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/OKHttpTest.java new file mode 100644 index 0000000..9333a56 --- /dev/null +++ b/xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/OKHttpTest.java @@ -0,0 +1,67 @@ +package cn.bugstack.xfg.dev.tech.test; + +import okhttp3.*; +import org.jetbrains.annotations.NotNull; +import org.junit.Test; + +import java.io.IOException; +import java.util.concurrent.CountDownLatch; + +/** + * @author Fuzhengwei bugstack.cn @小傅哥 + * @description OKHttp + * @create 2023-10-14 11:26 + */ +public class OKHttpTest { + + @Test + public void test_okhttp() throws Exception { + OkHttpClient client = new OkHttpClient(); + + String url = "https://api.zsxq.com/v2/groups/28885518425541/topics?scope=all&count=20"; + + Request request = new Request.Builder() + .url(url) + .addHeader("Accept-Encoding", "deflate, gzip") + .addHeader("accept", "application/json, text/plain, */*") + .addHeader("accept-language", "zh-CN,zh;q=0.9,en;q=0.8") + .addHeader("authority", "api.zsxq.com") + .addHeader("cookie", "__cuid=5330a556392a4c5b8084b4cbc165e0f3; zsxq_access_token=86EB233E-BBD0-1E3C-941D-817CA1303C87_9D76421394C6F474; abtest_env=product; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%22241858242255511%22%2C%22first_id%22%3A%2217ebd0b4317ecb-0b27f672c2d3af-133a6253-1296000-17ebd0b4318ba7%22%2C%22props%22%3A%7B%22%24latest_traffic_source_type%22%3A%22%E7%9B%B4%E6%8E%A5%E6%B5%81%E9%87%8F%22%2C%22%24latest_search_keyword%22%3A%22%E6%9C%AA%E5%8F%96%E5%88%B0%E5%80%BC_%E7%9B%B4%E6%8E%A5%E6%89%93%E5%BC%80%22%2C%22%24latest_referrer%22%3A%22%22%7D%2C%22%24device_id%22%3A%2217ebd0b4317ecb-0b27f672c2d3af-133a6253-1296000-17ebd0b4318ba7%22%2C%22identities%22%3A%22eyIkaWRlbnRpdHlfY29va2llX2lkIjoiMTgwMmQ2YjZiOWIxZjMtMGQ4YzMzZjhmYTA3YmEtMzU3MzZhMDMtMTI5NjAwMC0xODAyZDZiNmI5YzEwODYiLCIkaWRlbnRpdHlfbG9naW5faWQiOiIyNDE4NTgyNDIyNTU1MTEifQ%3D%3D%22%2C%22history_login_id%22%3A%7B%22name%22%3A%22%24identity_login_id%22%2C%22value%22%3A%22241858242255511%22%7D%7D; zsxqsessionid=4ac8449313681ca8b436d052eab5925e") + .addHeader("dnt", "1") + .addHeader("origin", "https://wx.zsxq.com") + .addHeader("referer", "https://wx.zsxq.com/") + .addHeader("sec-ch-ua", "\"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\"") + .addHeader("sec-ch-ua-mobile", "?0") + .addHeader("sec-ch-ua-platform", "\"macOS\"") + .addHeader("sec-fetch-dest", "empty") + .addHeader("sec-fetch-mode", "cors") + .addHeader("sec-fetch-site", "same-site") + .addHeader("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") + .addHeader("x-request-id", "372177b46-4e7d-9373-d891-98a22adaeb7") + .addHeader("x-signature", "32b39b5d1af5995e3b5022e58a8d8f23cd427434") + .addHeader("x-timestamp", "1697249698") + .addHeader("x-version", "2.45.0") + .build(); + + Call call = client.newCall(request); + + call.enqueue(new Callback() { + @Override + public void onFailure(@NotNull Call call, @NotNull IOException e) { + e.printStackTrace(); + } + + @Override + public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException { + ResponseBody responseBody = response.body(); + String string = responseBody.string(); + System.out.println(string); + } + }); + + // 等待回调 + new CountDownLatch(1).await(); + + } + +} diff --git a/xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/Retrofit2Test.java b/xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/Retrofit2Test.java new file mode 100644 index 0000000..7d72e2f --- /dev/null +++ b/xfg-dev-tech-app/src/test/java/cn/bugstack/xfg/dev/tech/test/Retrofit2Test.java @@ -0,0 +1,81 @@ +package cn.bugstack.xfg.dev.tech.test; + +import okhttp3.OkHttpClient; +import okhttp3.logging.HttpLoggingInterceptor; +import org.junit.Test; +import retrofit2.Call; +import retrofit2.Retrofit; +import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; +import retrofit2.converter.jackson.JacksonConverterFactory; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Headers; +import retrofit2.http.Query; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +/** + * @author Fuzhengwei bugstack.cn @小傅哥 + * @description okhttp Retrofit2 + * @create 2023-10-14 11:11 + */ +public class Retrofit2Test { + + @Test + public void test_retrofit() { + OkHttpClient.Builder httpClient = new OkHttpClient.Builder() + .connectTimeout(30, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS); + + HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(); + loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + httpClient.addInterceptor(loggingInterceptor); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("https://api.zsxq.com/") + .client(httpClient.build()) + .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) +// .addConverterFactory(GsonConverterFactory.create()) + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + + ApiService apiService = retrofit.create(ApiService.class); + + Call call = apiService.getTopics("all", 20, "zsxq_access_token=86EB233E-BBD0-1E3C-941D-817CA1303C87_9D76421394C6F474;"); + + try { + String response = call.execute().body(); + System.out.println(response); + } catch (IOException e) { + e.printStackTrace(); + } + } + + interface ApiService { + @GET("v2/groups/28885518425541/topics?scope=all&count=20") + @Headers({ + "Accept-Encoding: deflate, gzip", + "accept: application/json, text/plain, */*", + "accept-language: zh-CN,zh;q=0.9,en;q=0.8", + "authority: api.zsxq.com", + "dnt: 1", + "origin: https://wx.zsxq.com", + "referer: https://wx.zsxq.com/", + "sec-ch-ua: \"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\"", + "sec-ch-ua-mobile: ?0", + "sec-ch-ua-platform: \"macOS\"", + "sec-fetch-dest: empty", + "sec-fetch-mode: cors", + "sec-fetch-site: same-site", + "user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", + "x-request-id: 372177b46-4e7d-9373-d891-98a22adaeb7", + "x-signature: 32b39b5d1af5995e3b5022e58a8d8f23cd427434", + "x-timestamp: 1697249698", + "x-version: 2.45.0" + }) + Call getTopics(@Query("scope") String scope, @Query("count") int count, @Header("cookie") String cookie); + } + +} -- GitLab