zoukankan      html  css  js  c++  java
  • 利用HttpURLConnection发送请求

    HttpURLConnection:

    每个 HttpURLConnection实例都可用于生成单个请求,但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络。请求后在 HttpURLConnection 的 InputStream 或 OutputStream 上调用 close() 方法可以释放与此实例关联的网络资源,但对共享的持久连接没有任何影响。如果在调用 disconnect() 时持久连接空闲,则可能关闭基础套接字

    HttpURLConnection的父类是URLConnection

    今天写此文章的目的是由于工作中遇到ajax请求获取数据时碰到浏览器的跨域问题(由于javascript的同源策略导致的,同源就是两个页面有相同的协议、端口和主机),由于我们这边属于客户端,无法修改服务端代码,所以更改了请求方式,利用HttpURLConnection成功的解决跨域问题

    1.生成HttpURLConnection对象

    URL postUrl = new URL(url);
    HttpURLConnection conn = (HttpURLConnection)postUrl.openConnection();

    创建URL对象,通过openConnection方法创建URLConnection对象并强制转化成HttpURLConnection对象

    2.设置对应的方法参数,其中setRequestMethod为HttpURLConnection自有的方法

    conn.setConnectTimeout(20000);
    conn.setReadTimeout(30000);
    conn.setDoOutput(true);
    conn.setDoInput(true);
    conn.setUseCaches(true);
    conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
    conn.setRequestMethod("GET");
    conn.connect();

    3.获取请求数据

    StringBuffer sb = new StringBuffer();
    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
    String line = "";
    try{
        while((line = reader.readLine()) !=null){
            sb.append(line);
        }
            
    }catch(IOException e){
        e.printStackTrace();
    }
    try{
        reader.close();
    }catch(Exception e){
        e.printStackTrace();
    }
    conn.disconnect();
    return sb.toString();

    此次没有传参,直接通过getInputStream打开链接读取的输入流,并通过BufferedReader高级流读取数据,一行一行的append到StringBuffer中,成功获取数据。

    如果需要传入对应的参数要用到PrintWriter的print方法

    PrintWriter osw = new PrintWriter(conn.getOutputStream());
    osw.print(param);
    osw.flush();//刷新此流的缓冲
    osw.close();
  • 相关阅读:
    十天冲刺之三
    设计模式-模板方法模式
    设计模式-观察者模式
    设计模式-迭代子模式
    设计模式-责任链模式
    设计模式-门面模式
    1395. Count Number of Teams
    747. Largest Number At Least Twice of Others
    1160. Find Words That Can Be Formed by Characters
    1539. Kth Missing Positive Number
  • 原文地址:https://www.cnblogs.com/ccylovehs/p/5774168.html
Copyright © 2011-2022 走看看