如何获取okhttp的回调函数中的数据
时间: 2023-08-14 12:03:42 浏览: 220
基于鸿洋okhttputils 封装数据 bean和callback 回调
5星 · 资源好评率100%
在OkHttp的回调函数中获取数据,可以通过以下方式:
1. 在`onResponse`方法中,通过`response.body()`获取响应的Body,然后通过`string()`方法将其转化为String类型的数据。
```java
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
String responseData = response.body().string(); //获取响应数据
//对数据进行处理
}
}
});
```
2. 在`onResponse`方法中,通过`response.byteStream()`获取响应的InputStream,然后通过流的方式读取数据。
```java
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
InputStream inputStream = response.body().byteStream(); //获取响应数据流
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
String responseData = builder.toString(); //获取响应数据
//对数据进行处理
}
}
});
```
以上两种方式,根据需要选择其中一种即可。
阅读全文