Java 使用HttpClient时出现致命异常错误

Java 使用HttpClient时出现致命异常错误,java,android,json,exception,httpclient,Java,Android,Json,Exception,Httpclient,我想使用JSON并从web获取数据。我找到了一个教程,我应用了任何东西。结果是沮丧。简而言之: 致命异常:AsyncTask#1 java.lang.RuntimeException:执行时出错 doInBackground() 这是我的代码: package com.example.winsekiz.searchlist; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; im

我想使用JSON并从web获取数据。我找到了一个教程,我应用了任何东西。结果是沮丧。简而言之:

致命异常:AsyncTask#1
java.lang.RuntimeException:执行时出错 doInBackground()

这是我的代码:

package com.example.winsekiz.searchlist;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;

public class WebServer extends Activity {


    final static String URI = "www.hocaogluticaret.com/a.html";
    TextView tvData;
    JSONObject json;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.turkey);
        tvData = (TextView) findViewById(R.id.tv);
        new Game().execute("text");
    }

    protected JSONObject readGameParks() throws ClientProtocolException, IOException, JSONException{

        HttpClient client = new DefaultHttpClient();
        HttpGet get = new HttpGet(URI);
        HttpResponse response =client.execute(get);
        StatusLine status = response.getStatusLine();
        int s = status.getStatusCode();

        if(s == 200) {

            HttpEntity e = response.getEntity();
            String data = EntityUtils.toString(e);
            JSONArray posts = new JSONArray(data);
            JSONObject last = posts.getJSONObject(0);
        }

        return  null;
    }

    public class Game extends AsyncTask<String, String, String>{

        @Override
        protected String doInBackground(String... params) {

            try{
                json = readGameParks();
                String data = json.getString(params[0]);
                return  data;
            }

            catch (ClientProtocolException e) {
                e.printStackTrace();
            }

            catch (IOException e) {
                e.printStackTrace();
            }

            catch (JSONException e) {
                e.printStackTrace();
            }

            return null;
        }

        @Override
        protected void onPostExecute(String data){
            tvData.setText(data);
        }
    }
}

您的url不完整

www.hocaogluticaret.com/a.html
应该是

http://www.hocaogluticaret.com/a.html


您的url不完整

www.hocaogluticaret.com/a.html
应该是

http://www.hocaogluticaret.com/a.html


让我们逐步浏览代码

1) 启动异步任务

new Game().execute("text");
2) 去后台

json = readGameParks();
3) 连接到非限定URI

HttpGet get = new HttpGet("www.hocaogluticaret.com/a.html");
您会得到一个错误,要修复这个错误,请将
http://
放在地址前面


4) 假设建立了适当的连接,继续执行
返回null

String data = json.getString(params[0]);
return  data;
这里,
params[0]
是“text”,但
json
是null,因此抛出
NullPointerException

要修复此问题,请尝试在
readGameParks
中不返回
null
。我认为你应该做
最后一个返回在状态代码检查中


在代码中

JSONObject last = new JSONObject();

if(s == 200) {
    HttpEntity e = response.getEntity();
    String data = EntityUtils.toString(e);
    JSONArray posts = new JSONArray(data);
    last = posts.getJSONObject(0);
}

return last;

让我们逐步浏览代码

1) 启动异步任务

new Game().execute("text");
2) 去后台

json = readGameParks();
3) 连接到非限定URI

HttpGet get = new HttpGet("www.hocaogluticaret.com/a.html");
您会得到一个错误,要修复这个错误,请将
http://
放在地址前面


4) 假设建立了适当的连接,继续执行
返回null

String data = json.getString(params[0]);
return  data;
这里,
params[0]
是“text”,但
json
是null,因此抛出
NullPointerException

要修复此问题,请尝试在
readGameParks
中不返回
null
。我认为你应该做
最后一个返回在状态代码检查中


在代码中

JSONObject last = new JSONObject();

if(s == 200) {
    HttpEntity e = response.getEntity();
    String data = EntityUtils.toString(e);
    JSONArray posts = new JSONArray(data);
    last = posts.getJSONObject(0);
}

return last;


我建议使用volley for API callsTry来清理和重建您的项目。另外,请确保您已将添加到您的清单中。我建议使用volley for API callsTry来清理和重建您的项目。另外,请确保您已将添加到您的清单中,而这是一个问题。这不是错误所指的
readGameParks
正在返回
null
Okey。错误代码现在只有一个。虚拟设备显示空白页面。错误代码为:“getSlotFromBufferLocked:未知缓冲区”。完整错误消息为:仿真:eglSurfaceAttrib未实现W/OpenGLRenderer:未能在表面0x7feb1d9be1c0上设置EGL_交换_行为,错误=EGL_成功E/表面:getSlotFromBufferLocked:未知缓冲区:0x7feb2e2da9b0@EnesCeylan寻找“由”引起的单词。您刚才粘贴的文本与实际导致的错误无关。因此,最好只提出一个新问题,因为这似乎是另一个问题。而这是一个问题。这不是错误所指的
readGameParks
正在返回
null
Okey。错误代码现在只有一个。虚拟设备显示空白页面。错误代码为:“getSlotFromBufferLocked:未知缓冲区”。完整错误消息为:仿真:eglSurfaceAttrib未实现W/OpenGLRenderer:未能在表面0x7feb1d9be1c0上设置EGL_交换_行为,错误=EGL_成功E/表面:getSlotFromBufferLocked:未知缓冲区:0x7feb2e2da9b0@EnesCeylan寻找“由”引起的单词。您刚才粘贴的文本与实际导致的错误无关。因此,最好只提出一个新问题,因为这似乎是另一个问题。使用3。第一步,纠正了这么多错误。现在,我只有一个错误:“E/Surface:getSlotFromBufferLocked:unknown buffer:0x7feb2e2da5c0”,虚拟设备显示空白页。老实说,我不理解其他人。就像我在其他评论中告诉你的那样。查找并读取由NullPointerException引起的问题。间接地“最后返回”;我用u修复它。非常感谢你。第一步,纠正了这么多错误。现在,我只有一个错误:“E/Surface:getSlotFromBufferLocked:unknown buffer:0x7feb2e2da5c0”,虚拟设备显示空白页。老实说,我不理解其他人。就像我在其他评论中告诉你的那样。查找并读取由NullPointerException引起的问题。间接地“最后返回”;我用u修复它。非常感谢你。