【问题标题】:android httpclient not loading data [duplicate]android httpclient不加载数据[重复]
【发布时间】:2014-06-13 10:16:26
【问题描述】:

我尝试了一个来自 http 客户端视频的示例,我想从该站点加载数据,但是当我运行它时它没有显示任何内容,这是我的 getmethod 代码:

public class GetMethodEx {

public String getInternetData() throws Exception{
    BufferedReader in= null;
    String data=null;
    try{
        HttpClient client = new DefaultHttpClient();
        URI website = new URI("http://www.mybringback.com");
        HttpGet request = new HttpGet();
        request.setURI(website);
        HttpResponse response = client.execute(request);
        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        StringBuffer sb = new StringBuffer("");
        String l = "";
        String nl= System.getProperty("line.seperator");
        while((l=in.readLine()) != null)
        {
            sb.append(l+nl);
        }
        in.close();
        data = sb.toString();
        return data;
    }finally{
        if(in != null){
            try{
                in.close();
                return data;
            }catch(Exception e)
            {
                e.getStackTrace();
            }
        }
    }

}

}

这里是主要代码:

TextView httpStuff;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.httpex);
    httpStuff=(TextView)findViewById(R.id.tvhttp);
    GetMethodEx test = new GetMethodEx();
    String returned;
    try {
        returned = test.getInternetData();
        httpStuff.setText(returned);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

这是我的日志:

06-13 09:54:17.713: W/System.err(1367): android.os.NetworkOnMainThreadException
    06-13 09:54:17.713: W/System.err(1367):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
    06-13 09:54:17.713: W/System.err(1367):     at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
    06-13 09:54:17.721: W/System.err(1367):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
    06-13 09:54:17.721: W/System.err(1367):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
    06-13 09:54:17.733: W/System.err(1367):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
    06-13 09:54:17.733: W/System.err(1367):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    06-13 09:54:17.733: W/System.err(1367):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    06-13 09:54:17.737: W/System.err(1367):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    06-13 09:54:17.737: W/System.err(1367):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
    06-13 09:54:17.737: W/System.err(1367):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
    06-13 09:54:17.741: W/System.err(1367):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
    06-13 09:54:17.741: W/System.err(1367):     at com.amirhossein.simon.GetMethodEx.getInternetData(GetMethodEx.java:22)
    06-13 09:54:17.745: W/System.err(1367):     at com.amirhossein.simon.Httpex.onCreate(Httpex.java:20)
    06-13 09:54:17.745: W/System.err(1367):     at android.app.Activity.performCreate(Activity.java:5231)
    06-13 09:54:17.749: W/System.err(1367):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
    06-13 09:54:17.749: W/System.err(1367):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
    06-13 09:54:17.753: W/System.err(1367):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
    06-13 09:54:17.753: W/System.err(1367):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
    06-13 09:54:17.753: W/System.err(1367):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
    06-13 09:54:17.757: W/System.err(1367):     at android.os.Handler.dispatchMessage(Handler.java:102)
    06-13 09:54:17.757: W/System.err(1367):     at android.os.Looper.loop(Looper.java:136)
    06-13 09:54:17.761: W/System.err(1367):     at android.app.ActivityThread.main(ActivityThread.java:5017)
    06-13 09:54:17.765: W/System.err(1367):     at java.lang.reflect.Method.invokeNative(Native Method)
    06-13 09:54:17.765: W/System.err(1367):     at java.lang.reflect.Method.invoke(Method.java:515)
    06-13 09:54:17.769: W/System.err(1367):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    06-13 09:54:17.769: W/System.err(1367):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    06-13 09:54:17.769: W/System.err(1367):     at dalvik.system.NativeStart.main(Native Method)
    06-13 09:54:17.917: W/EGL_genymotion(1367): eglSurfaceAttrib not implemented

【问题讨论】:

  • 用关键字NetworkOnMainThreadException搜索你会发现很多类似的帖子

标签: android httpclient


【解决方案1】:

您无法在主 UI 中运行这些网络操作。

使用 AsyncTask 在后台执行 HTTP 请求或使用线程执行网络操作。

你可以在How to fix android.os.NetworkOnMainThreadException?找到一个例子

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2012-08-25
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 1970-01-01
    相关资源
    最近更新 更多