android新手一枚,android使用httclient获取服务器端数据失败,但是用java工程运行就可以成功获取。
伊谢尔伦
伊谢尔伦 2017-04-17 17:24:51
[Android讨论组]

各位 刚接触android,请教个问题,android使用httpclient获取服务器端的json数据总是失败,但是同样的代码用java工程来运行就可以获取结果,这个是为什么?

代码很简短: 但是总是连接失败

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    String content = "";
    TextView tv = (TextView) findViewById(R.id.showWiki);
    String url = "http://www.nowamagic.net/academy/android/";
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(url);
    ResponseHandler<String> responseHandler = new BasicResponseHandler();
    try {
        content = httpclient.execute(httpget, responseHandler);
        Toast.makeText(getApplicationContext(), "连接成功!", Toast.LENGTH_SHORT).show();
        tv.setText(content);
    } catch (Exception e) {
        // TODO: handle exception
        Toast.makeText(getApplicationContext(), "连接失败!", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }
    httpclient.getConnectionManager().shutdown();
}

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 这句话我也加了

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
大家讲道理
 private void httpRequest() {
        new Thread() {
            @Override
            public void run() {
                super.run();
                HttpClient httpclient = new DefaultHttpClient();
                HttpGet    httpget    = new HttpGet(url);
                ResponseHandler<String> responseHandler = new BasicResponseHandler();
                try {
                    content = httpclient.execute(httpget, responseHandler);
                    Toast.makeText(getApplicationContext(), "连接成功!", Toast.LENGTH_SHORT).show();
                    //更新UI,子线程不能更新UI
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            tv.setText(content);
                        }
                    });
                } catch (Exception e) {
                    // TODO: handle exception
                    Toast.makeText(getApplicationContext(), "连接失败!", Toast.LENGTH_SHORT).show();
                    e.printStackTrace();
                }
                httpclient.getConnectionManager().shutdown();


            }
        }.start();
    }
阿神

网络请求不要放到主线程中进行请求,可以用Thread在主线程外进行请求。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号