zoukankan      html  css  js  c++  java
  • 访问URL

    三种访问url的方式

      1 package com.urldemo.test;
      2 
      3 import java.io.BufferedReader;
      4 import java.io.IOException;
      5 import java.io.InputStreamReader;
      6 import java.io.OutputStreamWriter;
      7 import java.io.UnsupportedEncodingException;
      8 import java.net.HttpURLConnection;
      9 import java.net.MalformedURLException;
     10 import java.net.ProtocolException;
     11 import java.net.URL;
     12 import java.net.URLConnection;
     13 import java.net.URLEncoder;
     14 import java.nio.Buffer;
     15 import java.nio.channels.Pipe;
     16 import java.util.HashMap;
     17 import java.util.List;
     18 import java.util.Map;
     19 
     20 import javax.swing.text.html.parser.Entity;
     21 
     22 import org.apache.http.HttpEntity;
     23 import org.apache.http.HttpResponse;
     24 import org.apache.http.client.ClientProtocolException;
     25 import org.apache.http.client.ResponseHandler;
     26 import org.apache.http.client.methods.HttpGet;
     27 import org.apache.http.impl.client.CloseableHttpClient;
     28 import org.apache.http.impl.client.HttpClients;
     29 import org.apache.http.util.EntityUtils;
     30 
     31 public class URLUtil {
     32     /**
     33      * 
     34      *  1、 
     35      */
     36     public static String SendURLAndParam(String url, String method, String param) {
     37         String res = "";
     38         BufferedReader reader = null;
     39         try {
     40             // 1、获取真正的url
     41             // url = url+"?";
     42 //            param = URLEncoder.encode(param);// url编码  不是必须,看具体 接口需要
     43             URL realUrl = new URL(url + "?" + param);// 没有param url跟上?也不会出错
     44             // 2、获取url链接
     45             URLConnection conn = realUrl.openConnection();
     46             // 3、设置链接属性
     47             // Http报头分为通用报头,请求报头,响应报头和实体报头。
     48             conn.setRequestProperty("accept", "*/*");
     49             conn.setRequestProperty("Method", method);// GET还是POST
     50             conn.setRequestProperty("connection", "Keep-Alive");
     51             conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 用户代理
     52             // 4、建立连接,发送请求
     53             conn.connect();
     54             // 5、获取所有响应头字段
     55             Map<String, List<String>> map = conn.getHeaderFields();
     56             // 6、遍历所有响应头字段,获取到 cooies等
     57             for (String key : map.keySet()) {
     58                 System.out.println(key + "-->" + map.get(key));
     59             }
     60             // 7、定义BufferedReader 输入流来读取 URL的响应
     61             reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
     62             String line;// 循环读取
     63             while ((line = reader.readLine()) != null) {
     64                 res += line;
     65             }
     66         } catch (IOException e) {
     67             e.printStackTrace();
     68         } finally {
     69             if (reader != null) {// 关闭流
     70                 try {
     71                     reader.close();
     72                 } catch (IOException e) {
     73                     e.printStackTrace();
     74                 }
     75             }
     76         }
     77         return res;
     78     }
     79     /**
     80      * 
     81      *   2、
     82      * @return
     83      */
     84     static public String sendHttpURLAndData(String postData, String postUrl) {
     85 
     86         try {
     87             URL url = new URL(postUrl);
     88             HttpURLConnection conn = (HttpURLConnection) url.openConnection();
     89             conn.setRequestMethod("POST");
     90             conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
     91             conn.setRequestProperty("connection", "Keep-Alive");
     92             conn.setUseCaches(false);
     93             conn.setDoOutput(true);
     94 
     95             conn.setRequestProperty("Content-Length", "" + postData.length());
     96             OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
     97             out.write(postData);
     98             out.flush();
     99             out.close();
    100 
    101             if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
    102                 return "";
    103             }
    104             String line, result = "";
    105             BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
    106             while ((line = in.readLine()) != null) {
    107                 result += line + "
    ";
    108             }
    109             in.close();
    110             return result;
    111         } catch (Exception e) {
    112         }
    113         return "";
    114     }
    115 
    116     /**
    117      * 
    118      * 3、使用httpclient进行访问,需要是到 http://hc.apache.org/下载jar包
    119      * 
    120      * @param url
    121      * @return
    122      */
    123     static public String callOnHttp(String url) {
    124         String address = "";
    125         CloseableHttpClient httpClient = HttpClients.createDefault();
    126 
    127         try {
    128             HttpGet httpGet = new HttpGet(url);
    129             ResponseHandler<String> responseHandler = new ResponseHandler<String>() {
    130 
    131                 @Override
    132                 public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException {
    133                     int status = response.getStatusLine().getStatusCode();
    134                     if (status >= 200 && status < 300) {
    135                         HttpEntity entity = response.getEntity();
    136                         return entity != null ? EntityUtils.toString(entity) : null;
    137                     } else {
    138                         throw new ClientProtocolException("Unexpected response status:" + status);
    139                     }
    140 
    141                 }
    142             };
    143             address = httpClient.execute(httpGet, responseHandler);
    144         } catch (Exception e) {
    145             e.printStackTrace();
    146         } finally {
    147             try {
    148                 httpClient.close();
    149             } catch (IOException e) {
    150                 e.printStackTrace();
    151             }
    152 
    153         }
    154 
    155         return address;
    156     }
    157 
    158     static public String getWeather(String url, String apiKey, String city) {
    159         String param = "key=" + apiKey + "&city=" + city;
    160         String result = SendURLAndParam(url, "GET", param);
    161         return result;
    162     }
    163 static public void SMS(String url,String apiKey,int tplid,String tel,String wd) throws UnsupportedEncodingException {
    164          //String   text1  =   java.net.URLEncoder.encode("中国",   "utf-8");   
               //String   text2   =   java.net.URLDecoder.decode(text1,   "utf-8");   165 wd = URLEncoder.encode(wd,"UTF-8");//url编码 不是必须 看具体接口需要 166 String param = "key="+apiKey+"&tplid="+tplid+"&tel="+tel+"&wd="+wd; 167 168 SendURLAndParam(url, "GET",param); 169 } 170 public static void main(String[] args) throws UnsupportedEncodingException { 171 // String weather = getWeather("http://api.91cha.com/weather", "8c5abe8df3574e23b73aeb51c1efb667", "北京"); 172 // System.out.println(weather); 173 SMS("http://api.91cha.com/sms","64cff0922cbb4c6896dec8dc76884866",1,"18734741443","#code#=1265"); 174 // http://api.91cha.com/sms?key=64cff0922cbb4c6896dec8dc76884866&tplid=1&tel=18734741443&wd=#code#=1265 175 } 176 }
  • 相关阅读:
    前端工具webpack4.0各个击破——html部分
    云下IDC和云上VPC如何高速稳定互联?——云专线接入方案
    程序猿必备!最简单的颈椎操
    16节课搞懂大数据,视频教程限时免费领取
    【DevCloud · 敏捷智库】如何玩转每日站会?
    华为云实时数据处理“三剑客”
    一统江湖的大前端React.js-从开发者到工程师
    关于【微服务】,你必须了解这些
    【鲲鹏来了】华为云鲲鹏弹性云服务器 KC1一文全掌握(5)
    【昇腾学院】昇腾AI处理器软件栈--框架管理器(Framework)离线模型生成
  • 原文地址:https://www.cnblogs.com/the-wang/p/8920447.html
Copyright © 2011-2022 走看看