java使用okhttp
时间: 2025-01-29 20:44:35 浏览: 41
### 如何在Java项目中使用OkHttp发起HTTP请求
#### 添加依赖项
为了能够在Java项目中使用OkHttp库,需要先引入Maven或Gradle中的相应依赖。对于Maven构建工具而言,在`pom.xml`文件内加入如下配置[^1]:
```xml
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.9.3</version>
</dependency>
```
而对于采用Gradle作为构建系统的项目,则应在`build.gradle`里添加下面这行代码来声明对外部库的依赖关系[^2]:
```groovy
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
```
#### 创建同步GET请求实例
当完成上述准备工作之后就可以编写简单的程序片段来进行一次基本的GET方式访问远程服务器资源的操作了。这里给出一段完整的例子用于说明怎样通过同步调用来获取网页内容并打印到控制台上显示出来。
```java
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class OkHttpGetExample {
public static void main(String[] args) throws Exception {
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://www.example.com")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new RuntimeException("Request failed with code " + response.code());
System.out.println(response.body().string());
}
}
}
```
这段代码展示了创建一个`OkHttpClient`对象以及定义了一个指向目标URL地址的新建请求的过程;接着执行该请求并将返回的结果封装成`Response`类的形式处理。如果响应状态码表示成功则读取其主体部分的数据流转换为字符串形式输出给用户查看[^3]。
#### 发起异步POST请求样例
除了支持阻塞式的I/O操作外,OkHttp还允许开发者利用回调机制实现非阻塞性质的任务调度模式——即所谓的“异步”。下面提供了一段关于如何发送带有JSON负载体参数表单数据类型的POST方法调用的实际应用场景下的源代码:
```java
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import java.io.IOException;
public class OkHttpPostAsyncExample {
private final OkHttpClient client = new OkHttpClient();
public void run() throws IOException, InterruptedException {
MediaType JSON = MediaType.get("application/json; charset=utf-8");
String json = "{\"name\":\"John\",\"age\":30}";
RequestBody body = RequestBody.create(json, JSON);
Request request = new Request.Builder()
.url("https://jsonplaceholder.typicode.com/posts")
.post(body)
.build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e){
e.printStackTrace(); // Handle error here.
}
@Override
public void onResponse(Call call, Response response)throws IOException{
if(!response.isSuccessful()){
throw new IOException("Unexpected code "+ response);
}else{
System.out.println(response.body().string()); // Process successful response here.
}
}
});
Thread.sleep(5000); // Wait for the asynchronous operation to complete.
}
}
```
此案例中不仅包含了设置自定义头部信息的功能而且还实现了错误情况下的异常捕获逻辑以便于更好地管理和维护整个应用程序生命周期内的稳定性与可靠性[^4]。
阅读全文
相关推荐


















