致命异常:在Android的JSON响应的AsyncTask#3 [英] FATAL EXCEPTION: AsyncTask #3 in JSON Response for Android
问题描述
我的下一个excepcition,但我不知道为什么。我tryiing得到一个JSON阶跃响应从Django的服务器对象(Django的服务器工作percetly),但我得到下一个错误:
05-13 19:57:29.069:E / AndroidRuntime(8845):致命异常:AsyncTask的#3
05-13 19:57:29.069:E / AndroidRuntime(8845):工艺:com.example.webservicestemperatura,PID:8845
05-13 19:57:29.069:E / AndroidRuntime(8845):了java.lang.RuntimeException:执行doInBackground发生错误()
05-13 19:57:29.069:E / AndroidRuntime(8845):在android.os.AsyncTask $ 3.done(AsyncTask.java:300)
05-13 19:57:29.069:E / AndroidRuntime(8845):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
05-13 19:57:29.069:E / AndroidRuntime(8845):在java.util.concurrent.FutureTask.setException(FutureTask.java:222)
05-13 19:57:29.069:E / AndroidRuntime(8845):在java.util.concurrent.FutureTask.run(FutureTask.java:242)
05-13 19:57:29.069:E / AndroidRuntime(8845):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)
05-13 19:57:29.069:E / AndroidRuntime(8845):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-13 19:57:29.069:E / AndroidRuntime(8845):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)
05-13 19:57:29.069:E / AndroidRuntime(8845):在java.lang.Thread.run(Thread.java:841)
05-13 19:57:29.069:E / AndroidRuntime(8845):java.lang.IllegalArgumentException异常:非法字符在计划指标0:产生的原因192.168.1.68:8000/c_f/4.0
05-13 19:57:29.069:E / AndroidRuntime(8845):在java.net.URI.create(URI.java:727)
05-13 19:57:29.069:E / AndroidRuntime(8845):在org.apache.http.client.methods.HttpGet<&初始化GT;(HttpGet.java:75)
05-13 19:57:29.069:E / AndroidRuntime(8845):在com.example.webservicestemperatura.MainActivity $ sampleService.doInBackground(MainActivity
我的code是下一个:
类sampleService扩展的AsyncTask<布尔,布尔,布尔> { @覆盖
保护布尔doInBackground(布尔... PARAMS){
HttpClient的HttpClient的=新DefaultHttpClient();
德尔HTTPGET =新HTTPGET(192.168.1.68:8000/c_f/4.0);
del.setHeader(内容类型,应用/ JSON);
尝试{
HTT presponse RESP = httpClient.execute(DEL);
串respStr = EntityUtils.toString(resp.getEntity());
JSONObject的respJSON =新的JSONObject(respStr);
字符串远= respJSON.getString(远); //检查您的数据类型在Web服务来回报。
的System.out.println(HOLAAAAAAAAAAAAAAAAAAAAAA+远);
Log.d(服务,远);
}赶上(例外前){
Log.e(服务,错误!,前);
}
返回null;
}
如果我得到的http://它说:连接被拒绝:当我用它在Web浏览器它完美而我得到的JSON响应。但后来我得到下一个错误:
20 05-13:10:56.935:E /服务(12445):错误!
05-13 20:10:56.935:E /服务(12445):org.apache.http.conn.HttpHostConnectException:连接到http://192.168.1.68:8000拒绝
05-13 20:10:56.935:E /服务(12445):在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
05-13 20:10:56.935:E /服务(12445):在org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
05-13 20:10:56.935:E /服务(12445):在org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
05-13 20:10:56.935:E /服务(12445):在org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
05-13 20:10:56.935:E /服务(12445):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-13 20:10:56.935:E /服务(12445):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-13 20:10:56.935:E /服务(12445):在org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-13 20:10:56.935:E /服务(12445):在com.example.webservicestemperatura.MainActivity $ sampleService.doInBackground(MainActivity.java:53)
05-13 20:10:56.935:E /服务(12445):在com.example.webservicestemperatura.MainActivity $ sampleService.doInBackground(MainActivity.java:1)
05-13 20:10:56.935:E /服务(12445):在android.os.AsyncTask $ 2.call(AsyncTask.java:288)
05-13 20:10:56.935:E /服务(12445):在java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-13 20:10:56.935:E /服务(12445):在android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231)
05-13 20:10:56.935:E /服务(12445):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-13 20:10:56.935:E /服务(12445):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:587)
05-13 20:10:56.935:E /服务(12445):在java.lang.Thread.run(Thread.java:841)
05-13 20:10:56.935:E /服务(12445):java.net.ConnectException:产生的原因插座失败:EACCES(权限被拒绝)
05-13 20:10:56.935:E /服务(12445):在org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:181)
您URI是无效的,因为它缺少的协议。如果追加的http://
在前面,它应该正常工作
在响应您的更新,你应该学会正确读取LogCat中。
这说所致行:
是那些寻找,因为他们通常会告诉你这个问题的根本原因。在这种情况下,一个快速谷歌为您发布的例外带来了许多堆栈溢出的答案这将解决你的问题。
I got the next excepcition but I have no idea why. I'm tryiing to get a JSON respones object from a Django server (The Django server works percetly) but i get the next error:
05-13 19:57:29.069: E/AndroidRuntime(8845): FATAL EXCEPTION: AsyncTask #3
05-13 19:57:29.069: E/AndroidRuntime(8845): Process: com.example.webservicestemperatura, PID: 8845
05-13 19:57:29.069: E/AndroidRuntime(8845): java.lang.RuntimeException: An error occured while executing doInBackground()
05-13 19:57:29.069: E/AndroidRuntime(8845): at android.os.AsyncTask$3.done(AsyncTask.java:300)
05-13 19:57:29.069: E/AndroidRuntime(8845): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
05-13 19:57:29.069: E/AndroidRuntime(8845): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
05-13 19:57:29.069: E/AndroidRuntime(8845): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
05-13 19:57:29.069: E/AndroidRuntime(8845): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-13 19:57:29.069: E/AndroidRuntime(8845): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-13 19:57:29.069: E/AndroidRuntime(8845): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-13 19:57:29.069: E/AndroidRuntime(8845): at java.lang.Thread.run(Thread.java:841)
05-13 19:57:29.069: E/AndroidRuntime(8845): Caused by: java.lang.IllegalArgumentException: Illegal character in scheme at index 0: 192.168.1.68:8000/c_f/4.0
05-13 19:57:29.069: E/AndroidRuntime(8845): at java.net.URI.create(URI.java:727)
05-13 19:57:29.069: E/AndroidRuntime(8845): at org.apache.http.client.methods.HttpGet.<init>(HttpGet.java:75)
05-13 19:57:29.069: E/AndroidRuntime(8845): at com.example.webservicestemperatura.MainActivity$sampleService.doInBackground(MainActivity
My code is the next:
class sampleService extends AsyncTask<Boolean, Boolean, Boolean> {
@Override
protected Boolean doInBackground(Boolean... params) {
HttpClient httpClient = new DefaultHttpClient();
HttpGet del = new HttpGet("192.168.1.68:8000/c_f/4.0");
del.setHeader("content-type", "application/json");
try {
HttpResponse resp = httpClient.execute(del);
String respStr = EntityUtils.toString(resp.getEntity());
JSONObject respJSON = new JSONObject(respStr);
String far = respJSON.getString ("far"); //Check your type data to return in your web service.
System.out.println("HOLAAAAAAAAAAAAAAAAAAAAAA" + far);
Log.d("Service", far);
} catch(Exception ex) {
Log.e("Service","Error!", ex);
}
return null;
}
If I get the http:// it says "Connection refused": When I use it in a Web Browser it works perfectly And I get the JSON response. But then I get the NEXT ERROR:
05-13 20:10:56.935: E/Service(12445): Error!
05-13 20:10:56.935: E/Service(12445): org.apache.http.conn.HttpHostConnectException: Connection to http://192.168.1.68:8000 refused
05-13 20:10:56.935: E/Service(12445): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:183)
05-13 20:10:56.935: E/Service(12445): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
05-13 20:10:56.935: E/Service(12445): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
05-13 20:10:56.935: E/Service(12445): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
05-13 20:10:56.935: E/Service(12445): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
05-13 20:10:56.935: E/Service(12445): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
05-13 20:10:56.935: E/Service(12445): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
05-13 20:10:56.935: E/Service(12445): at com.example.webservicestemperatura.MainActivity$sampleService.doInBackground(MainActivity.java:53)
05-13 20:10:56.935: E/Service(12445): at com.example.webservicestemperatura.MainActivity$sampleService.doInBackground(MainActivity.java:1)
05-13 20:10:56.935: E/Service(12445): at android.os.AsyncTask$2.call(AsyncTask.java:288)
05-13 20:10:56.935: E/Service(12445): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
05-13 20:10:56.935: E/Service(12445): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
05-13 20:10:56.935: E/Service(12445): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
05-13 20:10:56.935: E/Service(12445): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
05-13 20:10:56.935: E/Service(12445): at java.lang.Thread.run(Thread.java:841)
05-13 20:10:56.935: E/Service(12445): Caused by: java.net.ConnectException: socket failed: EACCES (Permission denied)
05-13 20:10:56.935: E/Service(12445): at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:181)
Your URI isn't valid, as it is missing the protocol. if you append http://
on the front, it should work correctly
In response to your update, you should learn to read the LogCat properly.
Lines that say Caused by:
are ones to look for, as they will usually tell you the root cause of the issue. In this case, a quick google for the exception you posted brings up many Stack Overflow answers that would fix your question.
这篇关于致命异常:在Android的JSON响应的AsyncTask#3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!