【发布时间】:2015-11-04 16:10:28
【问题描述】:
当我使用 OkHttp 发布时,我会收到这样的回复(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
【问题讨论】:
-
if (response.code() == 200) { try { JSONObject jsonObject = new JSONObject(response.body().string()); } catch (JSONException e) { Log.i("XXX",e.toString()); } }
-
这是我得到的字符串... {"access_token":"2222222.22222.2222222","user":{"username":"xxx","bio":"","网站":"","profile_picture":"https:\/\/instagramimages-a.akamaihd.net\/profiles\/anonymousUser.jpg","full_name":"Test","id":"222222"} }
-
我得到了我在上面发布的字符串,并且在记录字符串之后立即发布。我使用 JSONObject 强制转换.... 带有转义序列的 url 可能有些奇怪?
-
通过不记录 response.body().string() 并直接将其与 JSONObject 构造函数一起使用 .... 代码有效。也许你可以使用一次。虽然解决了这个问题.... :)
标签: android instagram-api okhttp httpsurlconnection