【发布时间】:2017-10-02 04:12:20
【问题描述】:
我发出“GET”请求以获取 JSON 对象。当我尝试读取响应时,会引发错误。错误在标题中描述。 这对我来说真是个奇迹,因为当我在模拟器或浏览器中运行应用程序时,我得到 JSON 响应,一切正常。但是当我在真实手机上运行它时,我看到了这个错误...... 将不胜感激任何答案。这是我的代码。
class Task extends AsyncTask<String, Void, String> {
StringBuilder builder;
@Override
protected String doInBackground(String... params) {
HttpURLConnection connection;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
builder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
Log.e("log", "background error " + e);
}
return builder.toString();
}
@Override
protected void onPostExecute(String s) {
Log.e("log", "response " + s);
try {
JSONObject jsonObject = new JSONObject(s);
Log.e("log", "JSON = " + jsonObject);
} catch (JSONException e) {
e.printStackTrace();
Log.e("log", "post error " + e);
}
}
}
这是我在执行后得到的字符串
<html> <body>
<script type='text/javascript' charset='utf-8'>
window.location.href = '/'; </script>
</body> </html>
这是我得到的错误
05-04 08:56:19.989 2731-2731/? W/System.err: org.json.JSONException: Value
<html> of type java.lang.String cannot be converted to JSONObject
05-04 08:56:19.989 2731-2731/? W/System.err: at
org.json.JSON.typeMismatch(JSON.java:111)
05-04 08:56:19.989 2731-2731/? W/System.err: at org.json.JSONObject.
<init>(JSONObject.java:158)
05-04 08:56:19.989 2731-2731/? W/System.err: at org.json.JSONObject.
<init>(JSONObject.java:171)
05-04 08:56:19.989 2731-2731/? W/System.err: at
com.example.dshahzadyan.gettest.Task.onPostExecute(MainActivity.java:64)
05-04 08:56:19.999 2731-2731/? W/System.err: at
com.example.dshahzadyan.gettest.Task.onPostExecute(MainActivity.java:33)
05-04 08:56:19.999 2731-2731/? W/System.err: at
android.os.AsyncTask.finish(AsyncTask.java:602)
05-04 08:56:19.999 2731-2731/? W/System.err: at
android.os.AsyncTask.access$600(AsyncTask.java:156)
05-04 08:56:19.999 2731-2731/? W/System.err: at
android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
05-04 08:56:19.999 2731-2731/? W/System.err: at
android.os.Handler.dispatchMessage(Handler.java:99)
05-04 08:56:19.999 2731-2731/? W/System.err: at
android.os.Looper.loop(Looper.java:137)
05-04 08:56:19.999 2731-2731/? W/System.err: at
android.app.ActivityThread.main(ActivityThread.java:4517)
05-04 08:56:19.999 2731-2731/? W/System.err: at
java.lang.reflect.Method.invokeNative(Native Method)
05-04 08:56:19.999 2731-2731/? W/System.err: at
java.lang.reflect.Method.invoke(Method.java:511)
05-04 08:56:19.999 2731-2731/? W/System.err: at
【问题讨论】:
-
你能发布你的json响应吗
-
得到的答案根本不是 JSON,而是 HTML 文档。
-
当您使用手机时,您会收到 响应,该响应无法解析为 json 对象。
-
您的 Web API 中有一个异常,这就是它返回错误而不是 JSON 对象的原因。
-
这里是 JSON 响应。抱歉,它是俄语)api.webbankir.com/props 我无法真正理解它,因为我已经多次使用设备发送相同的请求,直到今天都没有问题))
标签: java android json get-request jsonexception