OkHttp Android JSonObject 转换异常
OkHttp Android JSonObject casting exception
当我使用 OkHttp post 时,我得到这样的回复 (Instagram api)
{"access_token":"2222222.22222.2222222","user":{"username":"xxx","bio":"","website":"","profile_picture":"https:\/\/instagramimages-a.akamaihd.net\/profiles\/anonymousUser.jpg","full_name":"Test","id":"222222"}}
我无法将其转换为 JsonObject(我认为这是因为 url 的格式化方式很奇怪)。
但是当我使用 HttpsUrlConnection 时一切正常。
OkHTTP
private final OkHttpClient client = new OkHttpClient();
public static final MediaType MEDIA_TYPE_MARKDOWN
= MediaType.parse("text/plain");
//然后在函数中
String postBody="client_id="+Application.INSTAGRAM_CLIENT_ID
+"&client_secret="+Application.INSTAGRAM_SECRET_KEY
+"&grant_type=authorization_code"
+"&redirect_uri=" +Application.CALLBACKURL
+"&code=" + SharedPrefHelper.getSharedPerferenceData(context, SharedPrefHelper.SHARED_PREFERENCE_KEY_INSTAGRAM_CODE, "");
Request request = new Request.Builder()
.url(Application.TOKENURL)
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN,postBody))
.build();
我在回调方法中使用 response.body.string() 来获取字符串并将其转换为 JsonObject。
if (response.code() == 200) {
try {
JSONObject jsonObject = new JSONObject(response.body().string());
} catch (JSONException e) {
}
}
如何解决这个问题?
错误:
org.json.JSONException: End of input at character 0 of
您只能使用 response.body().string() 一次。我打电话给它两次。首先用于记录响应,然后再次用于 json 转换。
第一件事:
您可能收到空白回复。它不为空,但响应为空。所以你得到这个错误而不是 NullPointerException
您在 JSON 中转换前是否已记录?查过了。
第二件事:
如果您目前使用 POST
,您可能需要尝试使用 GET
,反之亦然。
当我使用 OkHttp post 时,我得到这样的回复 (Instagram api)
{"access_token":"2222222.22222.2222222","user":{"username":"xxx","bio":"","website":"","profile_picture":"https:\/\/instagramimages-a.akamaihd.net\/profiles\/anonymousUser.jpg","full_name":"Test","id":"222222"}}
我无法将其转换为 JsonObject(我认为这是因为 url 的格式化方式很奇怪)。
但是当我使用 HttpsUrlConnection 时一切正常。
OkHTTP
private final OkHttpClient client = new OkHttpClient();
public static final MediaType MEDIA_TYPE_MARKDOWN
= MediaType.parse("text/plain");
//然后在函数中
String postBody="client_id="+Application.INSTAGRAM_CLIENT_ID
+"&client_secret="+Application.INSTAGRAM_SECRET_KEY
+"&grant_type=authorization_code"
+"&redirect_uri=" +Application.CALLBACKURL
+"&code=" + SharedPrefHelper.getSharedPerferenceData(context, SharedPrefHelper.SHARED_PREFERENCE_KEY_INSTAGRAM_CODE, "");
Request request = new Request.Builder()
.url(Application.TOKENURL)
.post(RequestBody.create(MEDIA_TYPE_MARKDOWN,postBody))
.build();
我在回调方法中使用 response.body.string() 来获取字符串并将其转换为 JsonObject。
if (response.code() == 200) {
try {
JSONObject jsonObject = new JSONObject(response.body().string());
} catch (JSONException e) {
}
}
如何解决这个问题? 错误:
org.json.JSONException: End of input at character 0 of
您只能使用 response.body().string() 一次。我打电话给它两次。首先用于记录响应,然后再次用于 json 转换。
第一件事:
您可能收到空白回复。它不为空,但响应为空。所以你得到这个错误而不是 NullPointerException
您在 JSON 中转换前是否已记录?查过了。
第二件事:
如果您目前使用 POST
,您可能需要尝试使用 GET
,反之亦然。