价值<;html>;无法将java.lang.String类型的转换为JSONObject

价值<;html>;无法将java.lang.String类型的转换为JSONObject,java,android,json,get-request,jsonexception,Java,Android,Json,Get Request,Jsonexception,我发出“GET”请求以获取JSON对象。当我尝试读取响应时,会抛出一个错误。错误在标题中描述。 这对我来说真是一个奇迹,因为当我在模拟器或浏览器上运行应用程序时,我得到了JSON响应,一切正常。但当我在真实的手机上运行它时,我看到了这个错误。。。。 如有任何答复,我将不胜感激。这是我的密码 class Task extends AsyncTask<String, Void, String> { StringBuilder builder; @Override protected S

我发出“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);
    }

}
类任务扩展了异步任务{
架线工;
@凌驾
受保护的字符串doInBackground(字符串…参数){
httpurl连接;
试一试{
URL=新URL(参数[0]);
connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod(“GET”);
connection.connect();
BufferedReader=new BufferedReader(new InputStreamReader(connection.getInputStream());
生成器=新的StringBuilder();
弦线;
而((line=reader.readLine())!=null){
builder.append(行);
}
}捕获(IOE异常){
e、 printStackTrace();
Log.e(“日志”、“背景错误”+e);
}
返回builder.toString();
}
@凌驾
受保护的void onPostExecute(字符串s){
Log.e(“日志”、“响应”+s);
试一试{
JSONObject JSONObject=新的JSONObject;
Log.e(“Log”、“JSON=“+jsonObject”);
}捕获(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>                        

window.location.href='/';
这是我得到的错误

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 
05-04 08:56:19.989 2731-2731/?W/System.err:org.json.JSONException:Value
无法将java.lang.String类型的转换为JSONObject
05-04 08:56:19.989 2731-2731/? W/System.err:at
类型不匹配(json.java:111)
05-04 08:56:19.989 2731-2731/? W/System.err:位于org.json.JSONObject。
(JSONObject.java:158)
05-04 08:56:19.989 2731-2731/? W/System.err:位于org.json.JSONObject。
(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
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
Looper.loop(Looper.java:137)
05-04 08:56:19.999 2731-2731/? W/System.err:at
main(ActivityThread.java:4517)
05-04 08:56:19.999 2731-2731/? W/System.err:at
java.lang.reflect.Method.Invokenactive(本机方法)
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

您得到的响应是html类型,而不是json类型。因此,当html格式的响应字符串无法转换为json时,onPostExecute方法。确保您试图点击的url发送的是json而不是html

您能发布json响应吗?您得到的答案不是json而是html文档。当您使用手机时,您会收到响应,无法解析为json对象。Web API中存在异常,这就是它返回错误而不是json对象的原因。以下是json响应。抱歉,它是俄语)我不能真正理解它,因为我已经使用设备多次发送相同的请求,直到今天都没有问题。)谢谢你的回答,但问题是响应是JSON格式的。我在emulator上运行程序时得到JSON格式的响应,但不是在真实设备上。若我并没有尝试使用其他URL发出请求,我会同意你们的意见。效果是一样的