Android Studio 2.1.2 http获取错误

Android Studio 2.1.2 http获取错误,android,http,get,Android,Http,Get,我已经为此奋斗了两天了,对我来说,这已经结束了。看来我在获得makeHttpRequest时遇到了麻烦。我可以添加数据,查看表中的所有记录,但我似乎无法在我的页面中获取单个记录数据,应用程序完全崩溃,“不幸的是”app_name“已停止 下面是我的JSonParser文件和活动文件。欢迎提出任何建议。我已经阅读了大量类似的问题,但似乎没有一个是有效的 谢谢大家 根据图像“JsonParser”在JsonParser中出错,根据图像“Activity”在我的活动文件中没有错误 记录错误如下---

我已经为此奋斗了两天了,对我来说,这已经结束了。看来我在获得makeHttpRequest时遇到了麻烦。我可以添加数据,查看表中的所有记录,但我似乎无法在我的页面中获取单个记录数据,应用程序完全崩溃,“不幸的是”app_name“已停止

下面是我的JSonParser文件和活动文件。欢迎提出任何建议。我已经阅读了大量类似的问题,但似乎没有一个是有效的

谢谢大家

根据图像“JsonParser”在JsonParser中出错,根据图像“Activity”在我的活动文件中没有错误

记录错误如下---

致命异常:主 流程:…MyApp.co.za.androidtophp,PID:32447 android.os.NetworkOnMainThreadException 在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273) 位于java.net.InetAddress.lookupHostByName(InetAddress.java:431) 位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 位于java.net.InetAddress.getAllByName(InetAddress.java:215) 位于org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:185) 位于org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:172) 位于org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:130) 位于org.apache.http.impl.client.DefaultRequestDirector.executeOriginal(DefaultRequestDirector.java:1337) 位于org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:705) 位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:578) 位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:494) 位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:472) 在…MyApp.co.za.androidtophp.JSONParser.makeHttpRequest(JSONParser.java:63) 在…MyApp.co.za.androidtophp.EditProductActivity$GetProductDetails$1.run(EditProductActivity.java:134) 位于android.os.Handler.handleCallback(Handler.java:739) 位于android.os.Handler.dispatchMessage(Handler.java:95) 位于android.os.Looper.loop(Looper.java:158) 位于android.app.ActivityThread.main(ActivityThread.java:7224) 位于java.lang.reflect.Method.invoke(本机方法) 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:1230) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

就apache而言,Gradle文件都在那里-

  • useLibrary'org.apache.http.legacy'
  • 编译文件树(目录:“libs”,包括:['*.jar']) testCompile'junit:junit:4.12' 编译'com.android.support:appcompat-v7:24.1.1' 编译'com.android.support:appcompat-v7:24.1.1' 编译'com.android.support:design:24.1.1' 编译'com.android.volley:volley:1.0.0' 编译'com.google.code.gson:gson:2.6.2' 编译组:“org.apache.httpcomponents”,名称:“httpclient android”,版本:“4.3.5.1”

  • 这是因为您正试图使HTTP请求同步。请创建一个AsyncTask或禁用严格模式(只有当应用程序可以在几秒钟内更改时没有问题时才使用)

    警告:不要将此用于公共应用程序发布

    要禁用严格模式,请在
    onCreate()
    中添加以下代码(就在
    super.onCreate(savedInstanceState)
    之后)


    不要在主线程上执行更长时间的运行任务,特别是在网络呼叫期间,因为信号强度、服务器崩溃/繁忙等各种因素,您不知道响应何时会到来

    将所有网络调用放入
    asynchtask
    中(如果它们相对较小,如下载大约1-3MB的图像、文档/文件等),或者使用
    httpurlconception调用来执行更长的任务,或者使用一些网络库来更好地使用内存和优化、高效的缓存机制

    • 易于使用

    • 成熟并得到谷歌的支持

          StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
          StrictMode.setThreadPolicy(policy);