当前位置: 首页 > wzjs >正文

网站开发基本工资是多少怎么查看网站的友情链接

网站开发基本工资是多少,怎么查看网站的友情链接,做网站收会员费,做交友信息网站可行么在 Java 开发中,HTTP 客户端是与服务端交互的关键组件。随着技术发展,出现了多种 HTTP 客户端库,本文汇总了常用的 Java HTTP 客户端,介绍其特点、适用场景,并附上简单使用示例,方便开发者快速选择和上手。…

在 Java 开发中,HTTP 客户端是与服务端交互的关键组件。随着技术发展,出现了多种 HTTP 客户端库,本文汇总了常用的 Java HTTP 客户端,介绍其特点、适用场景,并附上简单使用示例,方便开发者快速选择和上手。


1.常用 HTTP 客户端一览

名称简介特点
HttpClient(JDK 自带)Java 11 引入的官方 HTTP 客户端支持异步、HTTP/2,API 现代
RestTemplateSpring 提供的同步 HTTP 客户端(即将被淘汰)简洁,适合小项目;被 WebClient 替代
WebClientSpring 5 提供的响应式 HTTP 客户端支持响应式编程,推荐替代 RestTemplate
OkHttpClientSquare 出品,轻量级高性能 HTTP 客户端支持异步、连接池、拦截器
Apache HttpClientApache 出品的经典 HTTP 客户端库功能强大、稳定、支持各种高级特性
Feign声明式 HTTP 客户端,适用于 Spring Cloud开发效率高,集成 Ribbon/Hystrix
RetrofitSquare 出品,封装 OkHttp 的声明式客户端强大的 JSON 自动转换,适合 REST API
AsyncHttpClient异步非阻塞 HTTP 客户端(如 Netty 实现)高并发性能好,用于微服务场景
Vert.x WebClientVert.x 框架的异步 HTTP 客户端轻量级、响应式,非常适合微服务
Jetty HttpClientJetty 提供的 HTTP 客户端实现支持异步和 HTTP/2,常用于嵌入式


2.推荐选择场景

需求推荐客户端
简单同步请求RestTemplate(传统)或 HttpClient(Java 11+)
响应式或高并发WebClient, AsyncHttpClient, Vert.x WebClient
简洁封装、声明式调用Feign, Retrofit
高度可定制OkHttp, Apache HttpClient

3.各客户端 GET 和 POST 示例


1. HttpClient(Java 11+)

// GET 请求
HttpClient client = HttpClient.newHttpClient();HttpRequest getRequest = HttpRequest.newBuilder().uri(URI.create("https://jsonplaceholder.typicode.com/posts/1")).GET().build();HttpResponse<String> getResponse = client.send(getRequest, HttpResponse.BodyHandlers.ofString());
System.out.println("GET response: " + getResponse.body());// POST 请求
String json = "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}";HttpRequest postRequest = HttpRequest.newBuilder().uri(URI.create("https://jsonplaceholder.typicode.com/posts")).header("Content-Type", "application/json").POST(HttpRequest.BodyPublishers.ofString(json)).build();HttpResponse<String> postResponse = client.send(postRequest, HttpResponse.BodyHandlers.ofString());
System.out.println("POST response: " + postResponse.body());

2. RestTemplate

RestTemplate restTemplate = new RestTemplate();// GET 请求
String getResult = restTemplate.getForObject("https://jsonplaceholder.typicode.com/posts/1", String.class);
System.out.println("GET response: " + getResult);// POST 请求
String url = "https://jsonplaceholder.typicode.com/posts";
Map<String, Object> postBody = new HashMap<>();
postBody.put("title", "foo");
postBody.put("body", "bar");
postBody.put("userId", 1);String postResult = restTemplate.postForObject(url, postBody, String.class);
System.out.println("POST response: " + postResult);

3. WebClient

WebClient client = WebClient.create();// GET 请求
client.get().uri("https://jsonplaceholder.typicode.com/posts/1").retrieve().bodyToMono(String.class).subscribe(response -> System.out.println("GET response: " + response));// POST 请求
String json = "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}";client.post().uri("https://jsonplaceholder.typicode.com/posts").header("Content-Type", "application/json").bodyValue(json).retrieve().bodyToMono(String.class).subscribe(response -> System.out.println("POST response: " + response));

4. OkHttpClient

OkHttpClient client = new OkHttpClient();// GET 请求
Request getRequest = new Request.Builder().url("https://jsonplaceholder.typicode.com/posts/1").build();Response getResponse = client.newCall(getRequest).execute();
System.out.println("GET response: " + getResponse.body().string());// POST 请求
MediaType JSON = MediaType.get("application/json; charset=utf-8");
String json = "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}";RequestBody body = RequestBody.create(json, JSON);
Request postRequest = new Request.Builder().url("https://jsonplaceholder.typicode.com/posts").post(body).build();Response postResponse = client.newCall(postRequest).execute();
System.out.println("POST response: " + postResponse.body().string());

5. Apache HttpClient

CloseableHttpClient client = HttpClients.createDefault();// GET 请求
HttpGet getRequest = new HttpGet("https://jsonplaceholder.typicode.com/posts/1");
CloseableHttpResponse getResponse = client.execute(getRequest);
System.out.println("GET response: " + EntityUtils.toString(getResponse.getEntity()));// POST 请求
HttpPost postRequest = new HttpPost("https://jsonplaceholder.typicode.com/posts");
postRequest.setHeader("Content-Type", "application/json");
StringEntity entity = new StringEntity("{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}");
postRequest.setEntity(entity);CloseableHttpResponse postResponse = client.execute(postRequest);
System.out.println("POST response: " + EntityUtils.toString(postResponse.getEntity()));

6. Feign

interface JsonPlaceholderClient {@RequestLine("GET /posts/1")String getPost();@RequestLine("POST /posts")@Headers("Content-Type: application/json")String createPost(String json);
}JsonPlaceholderClient client = Feign.builder().target(JsonPlaceholderClient.class, "https://jsonplaceholder.typicode.com");// GET 请求
String getResponse = client.getPost();
System.out.println("GET response: " + getResponse);// POST 请求
String json = "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}";
String postResponse = client.createPost(json);
System.out.println("POST response: " + postResponse);

7. Retrofit

public interface ApiService {@GET("posts/1")Call<Post> getPost();@POST("posts")Call<Post> createPost(@Body Post post);
}Retrofit retrofit = new Retrofit.Builder().baseUrl("https://jsonplaceholder.typicode.com/").addConverterFactory(GsonConverterFactory.create()).build();ApiService service = retrofit.create(ApiService.class);// GET 请求
service.getPost().enqueue(new Callback<Post>() {public void onResponse(Call<Post> call, Response<Post> response) {System.out.println("GET response: " + response.body());}public void onFailure(Call<Post> call, Throwable t) {t.printStackTrace();}
});// POST 请求
Post newPost = new Post("foo", "bar", 1);
service.createPost(newPost).enqueue(new Callback<Post>() {public void onResponse(Call<Post> call, Response<Post> response) {System.out.println("POST response: " + response.body());}public void onFailure(Call<Post> call, Throwable t) {t.printStackTrace();}
});

8. AsyncHttpClient

AsyncHttpClient client = Dsl.asyncHttpClient();// GET 请求
client.prepareGet("https://jsonplaceholder.typicode.com/posts/1").execute().toCompletableFuture().thenAccept(response -> System.out.println("GET response: " + response.getResponseBody())).join();// POST 请求
String json = "{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}";client.preparePost("https://jsonplaceholder.typicode.com/posts").setHeader("Content-Type", "application/json").setBody(json).execute().toCompletableFuture().thenAccept(response -> System.out.println("POST response: " + response.getResponseBody())).join();

9. Vert.x WebClient

Vert.x 是一个轻量级、响应式的应用框架,其 WebClient 是异步非阻塞的 HTTP 客户端,非常适合高并发和微服务场景。

Vertx vertx = Vertx.vertx();
WebClient client = WebClient.create(vertx);// GET 请求
client.getAbs("https://jsonplaceholder.typicode.com/posts/1").send(ar -> {if (ar.succeeded()) {System.out.println("GET response: " + ar.result().bodyAsString());} else {ar.cause().printStackTrace();}});// POST 请求
JsonObject json = new JsonObject().put("title", "foo").put("body", "bar").put("userId", 1);client.postAbs("https://jsonplaceholder.typicode.com/posts").putHeader("Content-Type", "application/json").sendJsonObject(json, ar -> {if (ar.succeeded()) {System.out.println("POST response: " + ar.result().bodyAsString());} else {ar.cause().printStackTrace();}});

10. Jetty HttpClient

Jetty 提供的 HTTP 客户端,支持异步和 HTTP/2,适合嵌入式和高性能场景。

HttpClient client = new HttpClient();
client.start();// GET 请求
ContentResponse getResponse = client.GET("https://jsonplaceholder.typicode.com/posts/1");
System.out.println("GET response: " + getResponse.getContentAsString());// POST 请求
Request postRequest = client.POST("https://jsonplaceholder.typicode.com/posts");
postRequest.header("Content-Type", "application/json");
postRequest.content(new StringContentProvider("{\"title\":\"foo\",\"body\":\"bar\",\"userId\":1}"));ContentResponse postResponse = postRequest.send();
System.out.println("POST response: " + postResponse.getContentAsString());client.stop();

4.结语

随着 Java 生态的发展,HTTP 客户端的选择也愈发丰富和多样。无论是 JDK 自带的现代 HttpClient,还是功能强大的第三方库如 OkHttp、Apache HttpClient,以及适合响应式编程的 WebClient,都各有优势,满足不同场景需求。

选择合适的 HTTP 客户端,能极大提升开发效率和应用性能。希望本文的汇总与示例,能帮助你快速掌握各类客户端的基本用法,并根据项目需求做出最佳选择。

如果你有更多使用心得或想了解更深入的高级功能,欢迎留言交流,我们一起成长!

http://www.dtcms.com/wzjs/95295.html

相关文章:

  • ps网站设计怎么做郑州百度seo关键词
  • 用dw做网站百度搜索引擎广告投放
  • 删除百度收录网站公司网站设计制作
  • 高端网站建设价钱百度网盘搜索引擎官方入口
  • 泰安网站建设收益在线网站seo优化
  • 政府网站建设的重要意义seo排名赚钱
  • 有趣的网站名称搜索引擎推广步骤
  • 沧州免费建站网络整合营销推广
  • 个人网站备案介绍手机制作网站的软件
  • 网站建设好还需要续费吗橙子建站
  • 模板网站搭建google搜索关键词热度
  • 手机网站制作服务机构网页设计模板
  • 网站微场景代码河南网站建设哪家公司好
  • 建立用模板建立网站做网站公司排名
  • 邢台做网站推广的公司武汉疫情最新情况
  • 供应邯郸专业做网站搜索引擎推广的方法有哪些
  • phpcms律师网站源码十大营销模式
  • 杭州互联网企业有哪些seo排名大概多少钱
  • 做电商网站多少钱深圳seo优化公司
  • app下载官方网站视频剪辑培训机构哪个好
  • 想给大学做网站广告设计与制作需要学什么
  • 犀牛云做的网站好不好站长之家字体
  • 合肥网站建设网络销售每天做什么
  • 青羊区网站建设公司怎么在百度上面打广告
  • 做代理的项目在哪个网站网站外链工具
  • 什么是网站被黑怎么网上宣传自己的产品
  • 做网站需要学jq吗torrentkitty磁力搜索引擎
  • 专业网站建站企业指数基金怎么买
  • 现在手机网站用什么做的好个人网页免费域名注册入口
  • wordpress FTP媒体库网络seo是什么