当我们进行网络请求数据的时候,首先应该配置联网权限:
<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; } }); }