【问题标题】:How to solve Networkonmainthread Exception如何解决 Networkonmainthread 异常
【发布时间】:2011-12-08 06:24:52
【问题描述】:

我调用房地产网站的网络服务,为此我建立了自己的方法和所有.. 我开发了一个执行方法,我将根据我的要求设置我的网址,如下所示:

 public void Execute(RequestMethod method) throws Exception
    {
        switch(method) {
            case GET:
            {
                //add parameters
                String combinedParams = "";
                if(!params.isEmpty()){
                    combinedParams += "?";
                    for(NameValuePair p : params)
                    {
                        String paramString = p.getName() + "=" + URLEncoder.encode(p.getValue(),"UTF-8");
                        if(combinedParams.length() > 1)
                        {
                            combinedParams  +=  "&" + paramString;
                        }
                        else
                        {
                            combinedParams += paramString;
                        }
                    }
                }

                HttpGet request = new HttpGet(url + combinedParams);

                //add headers
                for(NameValuePair h : headers)
                {
                    request.addHeader(h.getName(), h.getValue());
                }

                **executeRequest(request, url);** // This throws an exception
                break;
            }
            case POST:
            {
                HttpPost request = new HttpPost(url);

                //add headers
                for(NameValuePair h : headers)
                {
                    request.addHeader(h.getName(), h.getValue());
                }

                if(!params.isEmpty()){
                    request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
                }

                executeRequest(request, url);
                break;
            }
        }
    }

在获取的情况下,我使用带有我想要的 url 的 httpget 发送请求,但当时会生成主线程上的网络异常。

【问题讨论】:

    标签: android


    【解决方案1】:

    在您的 AndroidManifest 中,您还可以使用以下内容来跳过错误:

    <uses-sdk android:minSdkVersion="8" 
            android:targetSdkVersion="8" />
    

    【讨论】:

    • 就我而言,我正在测试其他人制作的一些旧应用程序,但考虑到所有应用程序都使用同一个库,我无法理解为什么有些应用程序有效而其他应用程序无效。这解释了这个问题。谢谢!
    【解决方案2】:

    将您的代码更改为以下代码,即以这种方式调用执行

    new Thread()
    {
        @Override
        public void run()
        {
            Execute();
        }
    }.start();
    

    【讨论】:

      【解决方案3】:

      您必须使用ThreadAsyncTaskthis post 解释了很多有关此错误的信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        • 2017-09-15
        • 2017-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多