UrlConnection请求网络数据

使用UrlConnection进行网络数据获取
本文介绍了如何利用Java的UrlConnection进行网络数据的GET和POST请求操作,详细阐述了两种请求方式的实现步骤和注意事项。

1.Get请求

try {
      //1 定义 URL 地址
      URL url = new URL(地址 + 传过来的参数);
      //ctrl + h 查看类的继承结构
      //ctrl + q 查看方法信息
      //2 打开连接
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
      //3 设置:请求方法;超时
      //请求 方法 GET POST
      urlConnection.setRequestMethod("GET");
      //超时设置
      //读取超时
      urlConnection.setReadTimeout(5000);
      //连接超时
      urlConnection.setConnectTimeout(5000);
      //4 连接并获取状态码
      //////////////////////////////////
      int responseCode = urlConnection.getResponseCode();
      if (responseCode == 200) {
        //5 读取字节流转换成字符串结果
        String result = stream2String(urlConnection.getInputStream());
        //操作ui  子线程不要操作ui
        Message message = mHandler.obtainMessage(UPDATE_UI, result);
        //Message msg = new Message();
        mHandler.sendMessage(message);
        //info.setText(result);
      } else {
        Message message = mHandler.obtainMessage(UPDATE_UI, "error: " + responseCode);
        //info.setText("error: " + responseCode);
        mHandler.sendMessage(message);
      }
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    //将字节流转换成字符
    private String stream2String(InputStream is) throws IOException {
	    InputStreamReader isr = new InputStreamReader(is, "gbk");//"gbk"是解析码
	    BufferedReader br = new BufferedReader(isr);
	    StringBuilder stringBuilder = new StringBuilder();
	    for (String tmp = br.readLine(); tmp != null; tmp = br.readLine()) {
	      stringBuilder.append(tmp);
	    }
	
	    return stringBuilder.toString();

}
2.Post请求

try {
      //1 url
      URL url = new URL(地址);
      //2 打开连接
      HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
      //3 请求方式
      urlConnection.setRequestMethod("POST");
      //超时
      urlConnection.setReadTimeout(5000);
      urlConnection.setConnectTimeout(5000);
      //标识需要输出参数
      urlConnection.setDoOutput(true);
      //输出参数: tel=xxxxxxxxx
      String params = "tel=" + 传过来的参数;
      urlConnection.getOutputStream().write(params.getBytes());
      urlConnection.getOutputStream().flush();
      //获取结果
      //状态码
      int responseCode = urlConnection.getResponseCode();
      String result;
      if (responseCode == 200) {//请求成功
        result = stream2String(urlConnection.getInputStream(), "gbk");    
      } else {//没有请求成功
        result = "error: " + responseCode;
      }
      //更新 ui
      mHandler.sendMessage(mHandler.obtainMessage(UPDATE_UI, result));
    } catch (MalformedURLException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    //将字节流转换为字符流
    private String stream2String(InputStream is, String cs) throws IOException {
	    StringBuilder stringBuilder = new StringBuilder();		
	    InputStreamReader isr = new InputStreamReader(is, cs);
	    BufferedReader br = new BufferedReader(isr);		
	    for (String tmp = br.readLine(); tmp != null; tmp = br.readLine()) {
	      stringBuilder.append(tmp);
	    }
	    return stringBuilder.toString();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值