public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { Gson gson = new Gson(); String string = response.body().string(); Log.d("TAG", "onResponse: "+string); try { JSONObject jsonObject = new JSONObject(string); int code = jsonObject.getInt("code"); if (code == 200) { JSONObject result = jsonObject.getJSONObject("result"); JSONArray list = result.getJSONArray("list"); handler.post(() -> onHttpListener.success(gson.fromJson(list.toString(), new TypeToken<List<FortuneResult>>() { }.getType()))); } else { handler.post(() -> onHttpListener.error(jsonObject.optString("msg", "数据错误"))); } } catch (JSONException e) { throw new RuntimeException(e); } }
时间: 2024-02-10 17:34:38 浏览: 122
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
5星 · 资源好评率100%
这是一个使用OkHttp库进行网络请求的Java代码示例中的 onResponse 方法。在网络请求成功后,会回调此方法,使用 Gson 对数据进行解析和封装。
首先使用 Gson 创建一个对象,然后调用 response.body().string() 方法获取到返回的字符串数据。接着,使用 JSONObject 对字符串进行解析,获取到返回数据中的 code 值。如果 code 值为 200,则表示请求成功。此时,获取到 result 对象中的 list 数组,使用 Gson 将数组转换成指定类型的数据,并使用 onHttpListener.success 方法将数据传递给处理者。
如果 code 值不为 200,则表示请求失败。此时,使用 onHttpListener.error 方法将错误信息传递给处理者。其中,jsonObject.optString("msg", "数据错误") 方法可以获取到错误信息的本地化描述。在解析过程中,如果发生 JSONException 异常,则将其封装成 RuntimeException 并抛出。
阅读全文