博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

从Interne获取数据

Posted on 2012-08-19 20:53  J_turn  阅读(227)  评论(0)    收藏  举报

利用HttpURLConnection对象,我们可以从网络中获取网络数据。

<!-- 访问internet权限 -->

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

  

  public void myHttpURLConnection() {
        
        try {
   URL url = new URL("http://www.sohu.com");
   HttpURLConnection conn = (HttpsURLConnection)url.openConnection();

//设置连接超时
   conn.setConnectTimeout(5*1000);

//以GET方式发起请求
   conn.setRequestMethod("GET");
   if(conn.getResponseCode() != 200) throw new RuntimeException("请求URL失败");
   InputStream is = conn.getInputStream();

//第一个参数为输入流,第二个参数为字符集编码
   String result = readDate(is, "GDK");
   conn.disconnect();
        } catch (Exception e) {
   e.printStackTrace();
  } 
     
    }

 

   public static String readDate(InputStream inStream, String charsetName) {
     ByteArrayOutputStream outStream = new ByteArrayOutputStream();
     byte[] buffer = new byte[1024];
     int len = -1;
     try {
   while((len = inStream.read(buffer)) != -1) {
    outStream.write(buffer, 0, len);
   }
   byte[] data = outStream.toByteArray();
   outStream.close();
   inStream.close();
      return new String(data, charsetName);
  } catch (IOException e) {
   e.printStackTrace();
   return null;
  }
    }

 

// 利用HttpURLConnection对象,我们可以向网络发送请求参数.

String requestUrl = "http://localhost:8080/itcast/contanctmanage.do";

Map<String, String> requestParams = new HashMap<String, String>();

requestParams.put("age", "12");

requestParams.put("name", "中国");

 StringBuilder params = new StringBuilder();

for(Map.Entry<String, String> entry : requestParams.entrySet()){

  params.append(entry.getKey());

  params.append("=");

  params.append(URLEncoder.encode(entry.getValue(), "UTF-8"));

  params.append("&");

}

if (params.length() > 0) params.deleteCharAt(params.length() - 1);

byte[] data = params.toString().getBytes();

URL realUrl = new URL(requestUrl);

HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();

conn.setDoOutput(true);//发送POST请求必须设置允许输出

conn.setUseCaches(false);//不使用Cache

conn.setRequestMethod("POST");         

conn.setRequestProperty("Connection", "Keep-Alive");//维持长连接

conn.setRequestProperty("Charset", "UTF-8");

conn.setRequestProperty("Content-Length", String.valueOf(data.length));

conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());

outStream.write(data);

outStream.flush();

if( conn.getResponseCode() == 200 ){

        String result = readAsString(conn.getInputStream(), "UTF-8");

        outStream.close();

        System.out.println(result);

}

 

 

//   利用HttpURLConnection对象,我们可以向网络发送xml数据.

StringBuilder xml =  new StringBuilder();

xml.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>");

xml.append("<M1 V=10000>");

xml.append("<U I=1 D=\"N73\">中国</U>");

xml.append("</M1>");

byte[] xmlbyte = xml.toString().getBytes("UTF-8");

URL url = new URL("http://localhost:8080/itcast/contanctmanage.do?method=readxml");

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setConnectTimeout(5* 1000);

conn.setDoOutput(true);//允许输出

conn.setUseCaches(false);//不使用Cache

conn.setRequestMethod("POST");         

conn.setRequestProperty("Connection", "Keep-Alive");//维持长连接

conn.setRequestProperty("Charset", "UTF-8");

conn.setRequestProperty("Content-Length", String.valueOf(xmlbyte.length));

conn.setRequestProperty("Content-Type", "text/xml; charset=UTF-8");

DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());

outStream.write(xmlbyte);//发送xml数据

outStream.flush();

if (conn.getResponseCode() != 200) throw new RuntimeException("请求url失败");

InputStream is = conn.getInputStream();//获取返回数据

String result = readAsString(is, "UTF-8");

outStream.close();