当前位置: 首页 > 知识库问答 >
问题:

httpResponse=httpClient。执行(httpGet);

景哲
2023-03-14

我的android应用程序一直在崩溃。我正在尝试通过电话后连接到网络服务。但是我的应用程序每次尝试调用网络服务时都会崩溃。

 import android.app.Activity;

    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;

    import java.io.IOException;
    public class PostActivity extends Activity {

        //static String response = null;

        public void loadPost() throws IOException {
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpEntity httpEntity = null;
            HttpResponse httpResponse = null;

            String blogFeedUrl = "http://localhost/medapp/public/mobile/post";

            HttpGet httpGet = new HttpGet(blogFeedUrl);
            httpResponse = httpClient.execute(httpGet);  // <-- this is where the application crashes

        }

    }

共有1个答案

祁均
2023-03-14

根据您发布的代码以及在同一版本中的相关导入,取决于O.S(Esp Honeycomb及以后版本),您的应用程序将因NetworkOnMainThreadException而崩溃。您正在主线程上尝试网络操作,而不是在后台线程或Asyctask中。

在您的logcat中(如果您发布它的帮助),将抛出NetworkOnMainThreadException:

E/AndroidRuntime(673): java.lang.RuntimeException: Unable to start activity
    ComponentInfo{com.example/com.example.ExampleActivity}: android.os.NetworkOnMainThreadException

关于为什么会发生这种情况的解释在Android开发人员的网站上有很好的记录:

当应用程序尝试在其主线程上执行网络操作时,会引发NetworkOnMainThreadException。这仅适用于针对蜂巢SDK或更高版本的应用程序。针对早期SDK版本的应用程序可以在其主事件循环线程上进行联网,但这是非常不鼓励的。

经过:

为什么应用程序会崩溃或工作取决于O.S。

尝试AsyncTask以避免NetworkOnMainThread

为什么不使用严格模式替代方案作为解决方案,只进行调试(我建议避免这种情况,实际上,你知道现在的问题是什么):
解决它至关重要,而不是通过设置线程策略

 类似资料:
  • 我是java HttpClient的新手,目前正在尝试创建RestServiceApplication,但我无法将HttpResponse转换为字符串数组以访问数组的元素。 我已经为应用程序实现了以下控制器,它有不同的方法,每个方法都返回一个字符串数组。 通过Google,我发现我需要解析响应JSON,但我不知道如何解析。我从Spring.io下载了项目结构,因此我认为响应返回为JSON,但我对此

  • 问题内容: 我目前正在尝试从Android应用程序向php服务器发送数据(两者均由我控制)。 应用程序中的表单上收集了很多数据,这些数据已写入数据库。所有这一切。 在我的主代码中,首先我创建一个JSONObject(在此示例中,我已在此处将其裁剪): 接下来,我将对象传递给发送对象,并接收响应: HTTPPoster类: 这将获得响应,但是服务器返回403-禁止响应。 我试过稍微更改doPost函

  • 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 在每一个视图函数中必须返回一个HttpResponse对象,当然也可以是HttpResponse子对象 1.不用模板,直接返回数据 from django.http import HttpResponse def index(req

  • 问题内容: HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(“http://my.server:8080/android/service.php"); 生成一个json字符串。我该如何从我的手机上获取?顺便说一句; 我已经将该库排除在外了,我可以在其中使用任何方法吗? 有更好的方法,

  • 我正在尝试从Akka HttpResponse检索cookie cookie_jar=cookieLib.cookiejar()non_redirecting_opener=urllib2.build_opener(norredirectionprocessor,urllib2.httpcookieprocessor(cookie_jar))response=non_redirecting_ope

  • DoitPHP扩展类HttpResponse,用于HTTP请求时状态信息,获取文件mime类型。本类提供的类方法均支持静态调用。注:一般情况下不常用。 类方法使用说明: 1、httpStatus($code, $text = null) 设置HTTP状态信息。 参数说明: $code : HTTP 状态编码 $text : HTTP 状态信息 2、getMimeType($alias) 获取文件的