Java Android Json HttpGet/Post HttpResponse
我试图从mysql数据库中根据条形码编号获取产品。我检查了我的php代码,他们正在工作,但在android方面,我犯了一个错误。 这里是我的GetProductDetails类(我认为这部分还可以) Logcat错误 12-14 18:05:30.994:E/AndroidRuntime(986):致命异常:主 12-14 18:05:30.994:E/AndroidRuntime(986):android.os.NetworkOnMainThreadException 12-14 18:05:30.994:E/AndroidRuntime(986):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 12-14 18:05:30.994:E/AndroidRuntime(986):在libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)上 12-14 18:05:30.994:E/AndroidRuntime(986):在libcore.io.IoBridge.connecterno(IoBridge.java:127) 12-14 18:05:30.994:E/AndroidRuntime(986):在libcore.io.IoBridge.connect(IoBridge.java:112)上 12-14 18:05:30.994:E/AndroidRuntime(986):在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 12-14 18:05:30.994:E/AndroidRuntime(986):在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 12-14 18:05:30.994:E/AndroidRuntime(986):位于java.net.Socket.connect(Socket.java:842) 12-14 18:05:30.994:E/AndroidRuntime(986):位于org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) 12-14 18:05:30.994:E/AndroidRuntime(986):位于org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144) 12-14 18:05:30.994:E/AndroidRuntime(986):位于org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 12-14 18:05:30.994:E/AndroidRuntime(986):位于org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 12-14 18:05:30.994:E/AndroidRuntime(986):位于org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 12-14 18:05:30.994:E/AndroidRuntime(986):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 12-14 18:05:30.994:E/AndroidRuntime(986):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 12-14 18:05:30.994:E/AndroidRuntime(986):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 12-14 18:05:30.994:E/AndroidRuntime(986):位于com.example.ssa.JSONParser.makeHttpRequest(JSONParser.java:66) 12-14 18:05:30.994:E/AndroidRuntime(986):在com.example.ssa.Query\u product$GetProductDetails$1.run(Query\u product.java:134) 12-14 18:05:30.994:E/AndroidRuntime(986):在android.os.Handler.handleCallback(Handler.java:725)上 12-14 18:05:30.994:E/AndroidRuntime(986):在android.os.Handler.dispatchMessage(Handler.java:92)上 12-14 18:05:30.994:E/AndroidRuntime(986):在android.os.Looper.loop(Looper.java:137) 12-14 18:05:30.994:E/AndroidRuntime(986):位于android.app.ActivityThread.main(ActivityThread.java:5041) 12-14 18:05:30.994:E/AndroidRuntime(986):位于java.lang.reflect.Method.Invokenactive(本机方法) 12-14 18:05:30.994:E/AndroidRuntime(986):位于java.lang.reflect.Method.invoke(Method.java:511) 12-14 18:05:30.994:E/AndroidRuntime(986):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 12-14 18:05:30.994:E/AndroidRuntime(986):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 12-14 18:05:30.994:E/AndroidRuntime(986):在dalvik.system.NativeStart.main(本机方法) 12-14 18:10:31.483:I/进程(986):发送信号。PID:986信号:9 12-14 18:10:33.372:D/gralloc_金鱼(1025):未检测到GPU仿真的仿真器Java Android Json HttpGet/Post HttpResponse,java,php,mysql,json,httpresponse,Java,Php,Mysql,Json,Httpresponse,我试图从mysql数据库中根据条形码编号获取产品。我检查了我的php代码,他们正在工作,但在android方面,我犯了一个错误。 这里是我的GetProductDetails类(我认为这部分还可以) Logcat错误 12-14 18:05:30.994:E/AndroidRuntime(986):致命异常:主 12-14 18:05:30.994:E/AndroidRuntime(986):android.os.NetworkOnMainThreadException 12-14 18:05:
您无法在主线程上执行网络任务,因为如果网络任务需要很长时间,它可能会阻塞您的应用程序。您需要改为使用
AsyncTask
在后台运行此类任务
下面是一个问题。您无法在主线程上执行网络任务,因为如果网络任务需要很长时间,它可能会阻止您的应用程序。您需要改为使用
AsyncTask
在后台运行此类任务
这是一个错误。看起来不是json的错误。 您正试图从主线程调用一个android 4.0不允许的url
尝试使用AsynTask或从辅助线程调用url。看起来错误不是json。 您正试图从主线程调用一个android 4.0不允许的url
尝试使用AsynTask或从辅助线程调用url。尝试在下面的主活动中使用以下代码
setContentView()
,以避免出现networkMainThread
异常
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
尝试在下面的主活动中使用下面的代码
setContentView()
,以避免出现networkOnmainThread
异常
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
谢谢你的回答。我不明白如何在AsyncTask中插入JSONObject方法。我是android新手。@user3102822我需要看看你在哪里调用asyncTask
getProductDetails
,才能进一步帮助你。@user3102822你是否尝试过使用runOnUiThread()
而不是简单地将该线程中的所有内容放入doInBackground
?通过在后台的UI线程上运行某些东西,您似乎违背了AsyncTask
的目的。但我不完全确定,试试看,让我知道它是否有效,如果你不知道我的意思,我可以写一些代码让你更好地解释。谢谢你的回答。我不明白如何在AsyncTask中插入JSONObject方法。我是android新手。@user3102822我需要看看你在哪里调用asyncTaskgetProductDetails
,才能进一步帮助你。@user3102822你是否尝试过使用runOnUiThread()
而不是简单地将该线程中的所有内容放入doInBackground
?通过在后台的UI线程上运行某些东西,您似乎违背了AsyncTask
的目的。但我不完全确定,试试看
HttpResponse httpResponse = httpClient.execute(httpGet);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}