Java 异步任务中的httpclient.execute(httppost)崩溃
我试图为我的android应用程序创建一个服务器请求类,但它在httpclient.execute(httppost)上崩溃。即使是在try/catch内部,应用程序也会崩溃,而不是进入catch部分 代码:Java 异步任务中的httpclient.execute(httppost)崩溃,java,android,android-asynctask,http-post,androidhttpclient,Java,Android,Android Asynctask,Http Post,Androidhttpclient,我试图为我的android应用程序创建一个服务器请求类,但它在httpclient.execute(httppost)上崩溃。即使是在try/catch内部,应用程序也会崩溃,而不是进入catch部分 代码: 公共静态JSONObject ConvertHttpResponse(HttpResponse响应)抛出ParseException、IOException、JSONException{ //In:httpResponse //Out:来自httpResponse的已转换jsonObjec
公共静态JSONObject ConvertHttpResponse(HttpResponse响应)抛出ParseException、IOException、JSONException{
//In:httpResponse
//Out:来自httpResponse的已转换jsonObject
HttpEntity=response.getEntity();
字符串结果=EntityUtils.toString(实体);
JSONObject jObject=新JSONObject(结果);
if(jObject.length()=0)
返回null;
返回作业对象;
}
公共类DataAsyncSend扩展了AsyncTask{
GetCallback回调;
公共DataAsyncSend(GetCallback回调){
this.callback=callback;
}
@凌驾
受保护的JSONObject doInBackground(无效…参数){
HttpParams httpRequestParams=新的BasicHttpParams();
setConnectionTimeout(httpRequestParams,服务器连接超时);
HttpConnectionParams.setSoTimeout(httpRequestParams,服务器连接超时);
HttpClient=new DefaultHttpClient();
HttpPost=新的HttpPost(服务器地址+页面发送);
试一试{
post.setEntity(新的UrlEncodedFormEntity(数据));
HttpResponse response=client.execute(post);//此处崩溃
返回转换器httpresponse(response);
}捕获(例外e){
e、 printStackTrace();
返回null;
}
}
@凌驾
受保护的void onPostExecute(JSONObject响应){
progressDialog.disclose();
回调。完成(响应);
super.onPostExecute(响应);
}
日志:
10-21:16:45.284:W/EGL_genymotion(2711):未实现eglSurfaceAttrib
10-21 21:16:45.836:W/System.err(2711):org.json.JSONException:Value请发布错误日志/堆栈跟踪。确保在清单中使用internet权限,而不是所有异常ClientProtocolException、IOException、JSONException等…只需使用父类异常..catch(异常e){e.printStackTrace();返回null;}然后堆栈将显示我希望:)@ElliotM添加了日志file@user3553447我已经在用了
public static JSONObject ConvertHttpResponse(HttpResponse response) throws ParseException, IOException, JSONException {
//In: A httpResponse
//Out: A converted jsonObject from the httpResponse
HttpEntity entity=response.getEntity();
String result=EntityUtils.toString(entity);
JSONObject jObject = new JSONObject(result);
if(jObject.length()==0)
return null;
return jObject;
}
public class DataAsyncSend extends AsyncTask<Void,Void,JSONObject> {
GetCallback callback;
public DataAsyncSend(GetCallback callback) {
this.callback=callback;
}
@Override
protected JSONObject doInBackground(Void... params) {
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, SERVER_CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, SERVER_CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(SERVER_ADRESS + pageToSend);
try {
post.setEntity(new UrlEncodedFormEntity(data));
HttpResponse resposnse= client.execute(post); //crashes here
return ConvertHttpResponse(resposnse);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(JSONObject response) {
progressDialog.dismiss();
callback.done(response);
super.onPostExecute(response);
}
10-21 21:16:45.284: W/EGL_genymotion(2711): eglSurfaceAttrib not implemented
10-21 21:16:45.836: W/System.err(2711): org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
10-21 21:16:45.836: W/System.err(2711): at org.json.JSON.typeMismatch(JSON.java:111)
10-21 21:16:45.836: W/System.err(2711): at org.json.JSONObject.<init>(JSONObject.java:158)
10-21 21:16:45.836: W/System.err(2711): at org.json.JSONObject.<init>(JSONObject.java:171)
10-21 21:16:45.836: W/System.err(2711): at Networking.ServerRequests.ConvertHttpResponse(ServerRequests.java:95)
10-21 21:16:45.836: W/System.err(2711): at Networking.ServerRequests$DataAsyncSend.doInBackground(ServerRequests.java:122)
10-21 21:16:45.836: W/System.err(2711): at Networking.ServerRequests$DataAsyncSend.doInBackground(ServerRequests.java:1)
10-21 21:16:45.836: W/System.err(2711): at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-21 21:16:45.836: W/System.err(2711): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
10-21 21:16:45.836: W/System.err(2711): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-21 21:16:45.836: W/System.err(2711): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
10-21 21:16:45.836: W/System.err(2711): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
10-21 21:16:45.836: W/System.err(2711): at java.lang.Thread.run(Thread.java:856)
10-21 21:16:45.860: D/AndroidRuntime(2711): Shutting down VM
10-21 21:16:45.860: W/dalvikvm(2711): threadid=1: thread exiting with uncaught exception (group=0xa613e908)
10-21 21:16:45.860: E/AndroidRuntime(2711): FATAL EXCEPTION: main
10-21 21:16:45.860: E/AndroidRuntime(2711): java.lang.NullPointerException
10-21 21:16:45.860: E/AndroidRuntime(2711): at com.example.fififun.User.<init>(User.java:22)
10-21 21:16:45.860: E/AndroidRuntime(2711): at com.example.fififun.login$2.done(login.java:114)
10-21 21:16:45.860: E/AndroidRuntime(2711): at Networking.ServerRequests$DataAsyncSend.onPostExecute(ServerRequests.java:133)
10-21 21:16:45.860: E/AndroidRuntime(2711): at Networking.ServerRequests$DataAsyncSend.onPostExecute(ServerRequests.java:1)
10-21 21:16:45.860: E/AndroidRuntime(2711): at android.os.AsyncTask.finish(AsyncTask.java:631)
10-21 21:16:45.860: E/AndroidRuntime(2711): at android.os.AsyncTask.access$600(AsyncTask.java:177)
10-21 21:16:45.860: E/AndroidRuntime(2711): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
10-21 21:16:45.860: E/AndroidRuntime(2711): at android.os.Handler.dispatchMessage(Handler.java:99)
10-21 21:16:45.860: E/AndroidRuntime(2711): at android.os.Looper.loop(Looper.java:137)
10-21 21:16:45.860: E/AndroidRuntime(2711): at android.app.ActivityThread.main(ActivityThread.java:5041)
10-21 21:16:45.860: E/AndroidRuntime(2711): at java.lang.reflect.Method.invokeNative(Native Method)
10-21 21:16:45.860: E/AndroidRuntime(2711): at java.lang.reflect.Method.invoke(Method.java:511)
10-21 21:16:45.860: E/AndroidRuntime(2711): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
10-21 21:16:45.860: E/AndroidRuntime(2711): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
10-21 21:16:45.860: E/AndroidRuntime(2711): at dalvik.system.NativeStart.main(Native Method)