Android数据存储--网络存储

一,从Internet获取数据:

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

  URL url = new URL("http://www.sohu.com");

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

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

   conn.setRequestMethod(“GET”);//以get方式发起请求

  if (conn.getResponseCode() != 200)

        throw new RuntimeException("请求url失败");

  InputStreamis = conn.getInputStream();//得到网络返回的输入流

  String result = readData(is,"GBK");

  conn.disconnect();

//第一个参数为输入流,第二个参数为字符集编码

public static String readData(InputStream inSream, String charsetName) throws Exception{

  ByteArrayOutputStream outStream =new ByteArrayOutputStream();

  byte[] buffer =new byte[1024];

  int len =0;

  while( (len = inSream.read(buffer)) != -1 ){

  outStream.write(buffer,0, len);

  }

  byte[] data = outStream.toByteArray();

  outStream.close();

  inSream.close();

  return newString(data, charsetName);


2,利用HttpURLConnection对象,我们可以从网络中获取文件数据.

   URL url = new URL("http://photocdn.sohu.com/20100125/Img269812337.jpg");

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

     conn.setConnectTimeout(5* 1000);

     conn.setRequestMethod("GET");

   if (conn.getResponseCode() != 200)

        throw new RuntimeException("请求url失败");

     InputStreamis = conn.getInputStream();

     readAsFile(is,"Img269812337.jpg");

  public static void readAsFile(InputStream inSream, File file) throws Exception{

       FileOutputStream outStream =new FileOutputStream(file);

         byte[] buffer =new byte[1024];

          int len =0;

       while( (len =inSream.read(buffer)) != -1 ){

          outStream.write(buffer,0, len);

     }

        outStream.close();

        inSream.close();

}

二,向Internet发送请求参数

1,利用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 ){//如果返回码是200,就得到服务器返回的数据

        String result = readAsString(conn.getInputStream(), "UTF-8");//这个方法为自定义的流的读取方法

        outStream.close();

        System.out.println(result);

}

2,向Internet发送xml数据

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

     StringBuilder xml =  new StringBuilder();

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

       xml.append("<M1V=10000>");

       xml.append("<UI=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失败");

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

  String result = readAsString(is, "UTF-8");//自定义读取流的方法

      outStream.close();  












你可能感兴趣的:(Android网络存储数据)