• java http请求,字节流获取百度数据


    请求的地址为:

    http://api.map.baidu.com/place/v2/search?&q=%E9%A5%AD%E5%BA%97&region=%E9%87%8D%E5%BA%86&output=json&ak=10f2c8e6b9af4244be2453001b9dfe76&page_size=20&page_num=5

    page_num 需要每次+1 来获取参数

    考虑到获取的速度问题,决定每个请求都创建一个线程放入线程池,代码如下

    //

    package threadpool;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;

    public class test {
    public static void main(String[] args) {
    ExecutorService pool = Executors.newFixedThreadPool(3);
    int i = 1;
    while(i<=4){
      //4次http请求
      pool.execute(new loadData(i));
      i++;
      }
      }
    }

    //抓取数据的类,实现runable

    package threadpool;

    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;

    public class loadData implements Runnable {
         StringBuilder temp = new StringBuilder();
         int pagenumber;
         public loadData(int i){
           this.pagenumber = i;
         }
    @Override
        public void run() {
              System.out.println(pagenumber);
              try {
                  String address = "http://api.map.baidu.com/place/v2/search?                                    &q=%E9%A5%AD%E5%BA%97&region=%E9%87%8D%E5%BA%86&output=json&ak=10f2c8e6b9af4244be2453001b9dfe76&page_size=20&page_num="+pagenumber;
                 URL url=new URL(address);
                 HttpURLConnection Connection= (HttpURLConnection) url.openConnection();
                 InputStream is = Connection.getInputStream();
                 int len = 0; //每次读取的实际字节数
                 byte[] temp = new byte[1024]; //1024每次读取的字符的长度
                 StringBuilder sb = new StringBuilder();
                //new String 的参数byte,offset,len
                while((len=is.read(temp))!=-1){
                   sb.append(new String(temp,0,len));   //最后一次的长度不一定为1024
                }
                   is.close();
                } catch (MalformedURLException e) {
                   // TODO Auto-generated catch block
                  e.printStackTrace();
               } catch (IOException e) {
               // TODO Auto-generated catch block
                e.printStackTrace();
            }
          }
    }

  • 相关阅读:
    手机端网页web开发要点
    js javascript:void(0) 真正含义
    牛客第二场 C.message(计算几何+二分)
    计算几何_三维凸包
    【kuangbin专题】计算几何_半平面交
    【kuangbin专题】计算几何_凸包
    【kuangbin专题】计算几何基础
    Codeforces 1058 D. Vasya and Triangle(分解因子)
    网络流模板
    2018 Multi-University Training Contest 6
  • 原文地址:https://www.cnblogs.com/lilefordream/p/3598572.html
Copyright © 2020-2023  润新知