okhttp相应response怎么解析
时间: 2023-08-08 15:10:10 浏览: 69
在使用OkHttp发送网络请求后,我们可以通过Response对象来获取服务器返回的响应结果。解析响应结果的方式取决于服务器返回的数据格式。下面是几种常见的数据格式及其解析方式:
1. JSON格式数据的解析:可以使用第三方库比如Gson、FastJson等,将JSON字符串转为Java对象或者JSON数组。
示例代码:
```java
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
Gson gson = new Gson();
String responseStr = response.body().string();
YourObject yourObject = gson.fromJson(responseStr, YourObject.class);
}
```
2. XML格式数据的解析:可以使用第三方库比如SAX、Dom4j等,将XML字符串解析为Java对象。
示例代码:
```java
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
String responseStr = response.body().string();
SAXReader saxReader = new SAXReader();
Document doc = saxReader.read(new ByteArrayInputStream(responseStr.getBytes("utf-8")));
Element rootElement = doc.getRootElement();
//解析XML
}
```
3. 图片、音频等二进制数据:可以直接将Response对象中的ResponseBody转为byte[]数组,然后再进行处理。
示例代码:
```java
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
byte[] bytes = response.body().bytes();
//处理byte[]数组
}
```
注意:在使用OkHttp解析响应结果时,需要在子线程中进行,避免阻塞主线程。同时也需要注意在请求结束后,需要释放Response对象所持有的资源,否则可能会导致内存泄漏。