okhttp new JsonObject from Response
12,960
Since the call response.body().string()
will read the content from the return stream then close it, so the second time you call it. It will return nothing :\
Better way:
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
String responseData = response.body().string();
Log.e(TAG, "onResponse: " + responseData);
try {
JSONObject jsonObject = new JSONObject(responseData);
// Do something here
} catch (JSONException e) {
...}
Author by
Shuai Wang
Updated on July 26, 2022Comments
-
Shuai Wang almost 2 years
I am trying to use
OKHttp
andhttps://github.com/hongyangAndroid/okhttp-utils
to implement Login function, but I don't know how to create new aJsonObject
use Response in the Callback.OkHttpUtils.post() .url(url) .addParams("phone", "18681873411") .addParams("password", "18681873411") .build() .execute(new Callback() { @Override public Object parseNetworkResponse(Response response) throws Exception { Log.i("ws","---->>parseNetworkResponse" + response.body().string()); JSONObject jsonObj = null; try { jsonObj = new JSONObject(response.body().string()); } catch (JSONException e) { Log.i("ws","---->>JSONException"); e.printStackTrace(); } catch (IOException e) { Log.i("ws","---->>IOException"); e.printStackTrace(); } Log.i("ws","---->>111 :" ); String opCode = jsonObj.getString("OpCode"); String message = jsonObj.getString("Message"); Log.i("ws","---->>111 opCode:" + opCode); Log.i("ws","---->>111 Message:" + message); JSONObject result = new JSONObject(); result.put("qrcode",opCode); result.put("message", message); return result; } @Override public void onError(Call call, Exception e) { Log.i("ws","---->>onError" + e); } @Override public void onResponse(Object response) { Log.i("ws","---->>onResponse" + response.toString()); } });
and the error information:
parseNetworkResponse{"OpCode":0,"Message":"登陆成功","Other":{"id":1,"name":null,"phone":"18681873411","QQuid":null,"weixinuid":null,"gender":null,"age":null,"credits":null,"address":null,"signature":null,"imageurl":null,"password":"18681873411","created_at":"2016-05-19T17:05:02.000Z","updated_at":"2016-05-19T17:05:02.000Z"}} 05-20 11:29:01.953 13496-13621/com.smartspace.magicmirror I/ws: ---->>IOException 05-20 11:29:01.954 13496-13621/com.smartspace.magicmirror I/ws: ---->>111 : 05-20 11:29:01.955 13496-13496/com.smartspace.magicmirror I/ws: ---->>onErrorjava.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.getString(java.lang.String)' on a null object reference