Java 使用HttpClient时出现致命异常错误
我想使用JSON并从web获取数据。我找到了一个教程,我应用了任何东西。结果是沮丧。简而言之: 致命异常:AsyncTask#1Java 使用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
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修复它。非常感谢你。