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;
                
                
            }
        });
        
        
    }
原文地址:https://www.cnblogs.com/bokeyuan007/p/5211106.html