首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决Networkonmainthread异常

如何解决Networkonmainthread异常
EN

Stack Overflow用户
提问于 2011-12-08 14:24:53
回答 3查看 3.3K关注 0票数 0

我调用了一个房地产网站的web服务,为此我构建了我自己的方法。我开发了一个execute方法,我将根据我的要求设置我的url,如下所示:

代码语言:javascript
复制
 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;
            }
        }
    }

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

EN

回答 3

Stack Overflow用户

发布于 2012-06-30 14:40:41

在AndroidManifest中,您还可以使用以下命令跳过错误:

代码语言:javascript
复制
<uses-sdk android:minSdkVersion="8" 
        android:targetSdkVersion="8" />
票数 2
EN

Stack Overflow用户

发布于 2011-12-08 14:28:47

将您的代码更改为以下一个i.e调用执行方式

代码语言:javascript
复制
new Thread()
{
    @Override
    public void run()
    {
        Execute();
    }
}.start();
票数 1
EN

Stack Overflow用户

发布于 2014-11-08 22:39:27

你必须使用ThreadAsyncTaskthis post解释了很多关于这个错误的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8427045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档