• Android开发之Http联网请求数据


    当我们进行网络请求数据的时候,首先应该配置联网权限:

    <uses-permission android:name="android.permission.INTERNET" />

     HttpURLConnection请求网络数据:

    public class MainActivity extends Activity {
    
        private String string;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
         // android4.0以后,在主线程做联网操作是会报错,所以要开启新线程
            new Thread(){
                
                public void run() {
                    // 在子线程请求数据
                    myhttpconnection();
                }
            }.start();
        }
        private void myhttpconnection() {
            // TODO Auto-generated method stub
            String uri_path = "https://www.baidu.com";
            
                
                try {
                    // 得到URL对象,设置要访问的路径
                    URL url = new URL(uri_path);
                    // 得到联网操作类,HttpURLConnection
                    HttpURLConnection openConnection = (HttpURLConnection) url.openConnection();
                    // 设置连接超时,以毫秒为单位
                    openConnection.setConnectTimeout(5000);
                    // 设置请求方式,有GET和POST
                    openConnection.setRequestMethod("POST");
                    // 设置读取超时,以毫秒为单位
                    openConnection.setReadTimeout(5000);
                    // 开始连接
                    openConnection.connect();
                    
                    // 通过响应码判断是否连接成功
                    if(openConnection.getResponseCode() == 200){
                        // 得到服务器返回的数据,是以流的形式返回的
                        InputStream inputStream = openConnection.getInputStream();
                        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                        //接受流里的数据
                        String readData;
                        // 拼接流里的数据,保证数据是完整的
                        StringBuilder builder = new StringBuilder();
                        // 使用while循环,读取流里的数据,当流里的数据被读取完毕的时候跳出循环
                        while ((readData = bufferedReader.readLine()) != null) {
                            builder.append(readData);
                        }
                        String stringData = builder.toString();
                        Log.i("aaa", stringData);
                    }
                    
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                
                
            }
    }

    HttpClient请求网络数据:

    public class MainActivity extends Activity {
    
        private String string;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            //Android4.0之后 请求网络必须在子线程中执行
            new Thread(){
                //在子线程请求网络
                public void run() {
                    httpclietn();
                }
    
                private void httpclietn() {
                    // TODO Auto-generated method stub
                     String uri = "http://www.baidu.com";
                        
                        //得到HttpClient对象
                        HttpClient httpClient = new DefaultHttpClient();
                        //使用httppost请求,并指定uri
                        HttpPost httpPost = new HttpPost(uri);
                        
                        //连接网络
                        try {
                            HttpResponse httpResponse = httpClient.execute(httpPost);
                            //得到状态行
                            StatusLine statusLine = httpResponse.getStatusLine();
                            //得到状态码
                            int statusCode = statusLine.getStatusCode();
                            if(statusCode == 200){
                                // 得到实体.实体就是服务器返回的数据
                                HttpEntity httpEntity = httpResponse.getEntity();
                                string = EntityUtils.toString(httpEntity,"utf-8");
                                Log.i("aaa", string);
                            }
                            
                        } catch (ClientProtocolException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                };
            }.start();
        }
    }

     
    使用Utils框架中的HttpUtils进行网络请求:

    public class MainActivity extends Activity {
        
        String url = "http://169.254.61.148:8080/an.json";
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            
            //请求网络数据
            HttpUtils httpUtils = new HttpUtils();
            httpUtils.send(HttpMethod.POST, url, new RequestCallBack<String>() {
                @Override
                public void onFailure(HttpException arg0, String arg1) {
                    // TODO Auto-generated method stub
                    
                }    
                @Override
                public void onSuccess(ResponseInfo<String> arg0) {
                    // TODO Auto-generated method stub
                    String string = arg0.result;
                    
                    
                }
            });
            
            
        }
  • 相关阅读:
    struts2笔记之if控制标签
    struts2标签之iterator遍历集合
    struts2获得session和request
    数据库操作语句
    weixinapp api
    struts2笔记之tree标签输出树
    struts2笔记之整合Tiles
    C++中的符号
    JSP布局相关使用
    5.Github仓库
  • 原文地址:https://www.cnblogs.com/bokeyuan007/p/5211106.html
Copyright © 2020-2023  润新知