zoukankan      html  css  js  c++  java
  • java.net.*获取网络数据

     1 import java.io.ByteArrayOutputStream;
    2 import java.io.File;
    3 import java.io.FileOutputStream;
    4 import java.io.InputStream;
    5 import java.net.HttpURLConnection;
    6 import java.net.URL;
    7
    8 public class NetTool {
    9
    10 /**
    11 * 获得url代码数据
    12 * */
    13 public static String getHtml(String path, String encoding) throws Exception {
    14 URL url = new URL(path);
    15 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    16 conn.setRequestMethod("GET");
    17 conn.setConnectTimeout(6 * 1000);
    18 System.out.println(conn.getResponseCode());
    19 if (conn.getResponseCode() == 200) {
    20 InputStream inputStream = conn.getInputStream();
    21 byte[] data = readStream(inputStream);
    22 return new String(data, encoding);
    23 }
    24 return null;
    25 }
    26
    27 /**
    28 * 获取指定路径,的数据。
    29 * **/
    30 public static byte[] getImage(String urlpath) throws Exception {
    31 URL url = new URL(urlpath);
    32 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    33 conn.setRequestMethod("GET");
    34 conn.setConnectTimeout(6 * 1000);
    35 if (conn.getResponseCode() == 200) {
    36 InputStream inputStream = conn.getInputStream();
    37 return readStream(inputStream);
    38 }
    39 return null;
    40 }
    41
    42 /**
    43 * 读取数据 输入流
    44 * */
    45 public static byte[] readStream(InputStream inStream) throws Exception {
    46 ByteArrayOutputStream outstream = new ByteArrayOutputStream();
    47 byte[] buffer = new byte[1024];
    48 int len = -1;
    49 while ((len = inStream.read(buffer)) != -1) {
    50 outstream.write(buffer, 0, len);
    51 }
    52 outstream.close();
    53 inStream.close();
    54 return outstream.toByteArray();
    55 }
    56 }

     1 editText.setText("http://apps.hi.baidu.com/share/detail/30420431");
    2
    3 button.setOnClickListener(new View.OnClickListener() {
    4 @Override
    5 public void onClick(View v) {
    6 String strHtmlUrl = editText.getText().toString();
    7 try {
    8 html = NetTool.getHtml(strHtmlUrl, "GB2312");
    9 textView.setText(html);
    10 } catch (Exception e) {
    11 Log.i("Activity02", e.toString());
    12 Toast.makeText(Activity02.this, "获得网页失败", 1).show();
    13 }
    14
    15 }
    16 });

    PS:有些网站 弄下来之后是中文是乱码, why?

    我一遇到编码问题就头晕 @@@

    String dataString = "";
    String urlString
    = "http://www.qidian.com/BookReader/1995036.aspx";
    try {
    URL url
    = new URL(urlString);
    HttpURLConnection conn
    = (HttpURLConnection) url.openConnection();

    InputStreamReader
    in = new InputStreamReader(conn.getInputStream(),"GB2312");

    BufferedReader buffer
    = new BufferedReader(in);
    String inputString
    = "";
    while ((inputString = buffer.readLine()) != null) {
    dataString
    += inputString + "\n";
    }
    in.close();
    conn.disconnect();
    }
    catch (Exception e) {
    System.
    out.println(e.getMessage() + "");
    }
    setContentView(R.layout.main);
    TextView tv
    = (TextView) this.findViewById(R.id.textView);
    //dataString = FormatStr(dataString);
    tv.setText(dataString);

    InputStreamReader in = new InputStreamReader(conn.getInputStream(),"GB2312"); 通过这样重新编码后 显示出来这个网页中文没有乱码

    但是 当我把urlString 换成百度的时候 又有乱码了············坑爹 百度的是要用UTF-8 才不会有中文乱码!!

    PS:跪求一劳永逸的解决方案,有没有一种方法能够获得网站的网页编码格式啊······················     


  • 相关阅读:
    centOS7下安装GUI图形界面
    centos7 安装VMware Tools 遇到的一系列问题的解决方案
    centos7 更新源 安装ifconfig
    隐写 小案例
    linux shell脚本编程笔记(二): 分支结构
    strncmp memcmp区别
    linux shell脚本编程笔记(一): 构建基本脚本
    linux: sort排序数据 grep搜索数据
    C/C++控制台输出时设置字体及背景颜色
    boost.asio包装类st_asio_wrapper开发教程(转)
  • 原文地址:https://www.cnblogs.com/xiaobuild/p/2139581.html
Copyright © 2011-2022 走看看