• JAVA发送http get/post请求,调用http接口、方法


    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.UnsupportedEncodingException;
    import java.net.HttpURLConnection;
    import java.net.InetSocketAddress;
    import java.net.Proxy;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.List;
    import java.util.Map;

    /**
    * Http请求工具类
    * @author snowfigure
    * @since 2014-8-24 13:30:56
    * @version v1.0.1
    */
    public class HttpRequestUtil {
    static boolean proxySet = false;
    static String proxyHost = "127.0.0.1";
    static int proxyPort = 8087;
    /**
    * 编码
    * @param source
    * @return
    */
    public static String urlEncode(String source,String encode) {
    String result = source;
    try {
    result = java.net.URLEncoder.encode(source,encode);
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    return "0";
    }
    return result;
    }
    public static String urlEncodeGBK(String source) {
    String result = source;
    try {
    result = java.net.URLEncoder.encode(source,"GBK");
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    return "0";
    }
    return result;
    }
    /**
    * 发起http请求获取返回结果
    * @param req_url 请求地址
    * @return
    */
    public static String httpRequest(String req_url) {
    StringBuffer buffer = new StringBuffer();
    try {
    URL url = new URL(req_url);
    HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();

    httpUrlConn.setDoOutput(false);
    httpUrlConn.setDoInput(true);
    httpUrlConn.setUseCaches(false);

    httpUrlConn.setRequestMethod("GET");
    httpUrlConn.connect();

    // 将返回的输入流转换成字符串
    InputStream inputStream = httpUrlConn.getInputStream();
    InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
    BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

    String str = null;
    while ((str = bufferedReader.readLine()) != null) {
    buffer.append(str);
    }
    bufferedReader.close();
    inputStreamReader.close();
    // 释放资源
    inputStream.close();
    inputStream = null;
    httpUrlConn.disconnect();

    } catch (Exception e) {
    System.out.println(e.getStackTrace());
    }
    return buffer.toString();
    }

    /**
    * 发送http请求取得返回的输入流
    * @param requestUrl 请求地址
    * @return InputStream
    */
    public static InputStream httpRequestIO(String requestUrl) {
    InputStream inputStream = null;
    try {
    URL url = new URL(requestUrl);
    HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
    httpUrlConn.setDoInput(true);
    httpUrlConn.setRequestMethod("GET");
    httpUrlConn.connect();
    // 获得返回的输入流
    inputStream = httpUrlConn.getInputStream();
    } catch (Exception e) {
    e.printStackTrace();
    }
    return inputStream;
    }


    /**
    * 向指定URL发送GET方法的请求
    *
    * @param url
    * 发送请求的URL
    * @param param
    * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    * @return URL 所代表远程资源的响应结果
    */
    public static String sendGet(String url, String param) {
    String result = "";
    BufferedReader in = null;
    try {
    String urlNameString = url + "?" + param;
    URL realUrl = new URL(urlNameString);
    // 打开和URL之间的连接
    URLConnection connection = realUrl.openConnection();
    // 设置通用的请求属性
    connection.setRequestProperty("accept", "*/*");
    connection.setRequestProperty("connection", "Keep-Alive");
    connection.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    // 建立实际的连接
    connection.connect();
    // 获取所有响应头字段
    Map<String, List<String>> map = connection.getHeaderFields();
    // 遍历所有的响应头字段
    for (String key : map.keySet()) {
    System.out.println(key + "--->" + map.get(key));
    }
    // 定义 BufferedReader输入流来读取URL的响应
    in = new BufferedReader(new InputStreamReader(
    connection.getInputStream()));
    String line;
    while ((line = in.readLine()) != null) {
    result += line;
    }
    } catch (Exception e) {
    System.out.println("发送GET请求出现异常!" + e);
    e.printStackTrace();
    }
    // 使用finally块来关闭输入流
    finally {
    try {
    if (in != null) {
    in.close();
    }
    } catch (Exception e2) {
    e2.printStackTrace();
    }
    }
    return result;
    }

    /**
    * 向指定 URL 发送POST方法的请求
    *
    * @param url
    * 发送请求的 URL
    * @param param
    * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
    * @param isproxy
    * 是否使用代理模式
    * @return 所代表远程资源的响应结果
    */
    public static String sendPost(String url, String param,boolean isproxy) {
    OutputStreamWriter out = null;
    BufferedReader in = null;
    String result = "";
    try {
    URL realUrl = new URL(url);
    HttpURLConnection conn = null;
    if(isproxy){//使用代理模式
    @SuppressWarnings("static-access")
    Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress(proxyHost, proxyPort));
    conn = (HttpURLConnection) realUrl.openConnection(proxy);
    }else{
    conn = (HttpURLConnection) realUrl.openConnection();
    }
    // 打开和URL之间的连接

    // 发送POST请求必须设置如下两行
    conn.setDoOutput(true);
    conn.setDoInput(true);
    conn.setRequestMethod("POST"); // POST方法


    // 设置通用的请求属性

    conn.setRequestProperty("accept", "*/*");
    conn.setRequestProperty("connection", "Keep-Alive");
    conn.setRequestProperty("user-agent",
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

    conn.connect();

    // 获取URLConnection对象对应的输出流
    out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
    // 发送请求参数
    out.write(param);
    // flush输出流的缓冲
    out.flush();
    // 定义BufferedReader输入流来读取URL的响应
    in = new BufferedReader(
    new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = in.readLine()) != null) {
    result += line;
    }
    } catch (Exception e) {
    System.out.println("发送 POST 请求出现异常!"+e);
    e.printStackTrace();
    }
    //使用finally块来关闭输出流、输入流
    finally{
    try{
    if(out!=null){
    out.close();
    }
    if(in!=null){
    in.close();
    }
    }
    catch(IOException ex){
    ex.printStackTrace();
    }
    }
    return result;
    }

    public static void main(String[] args) {
    //demo:代理访问
    String url = "http://api.adf.ly/api.php";
    String para = "key=youkeyid&youuid=uid&advert_type=int&domain=adf.ly&url=http://somewebsite.com";

    String sr=HttpRequestUtil.sendPost(url,para,true);
    System.out.println(sr);
    }

    }

    /**
    * 发送Http post请求
    *
    * @param xmlInfo
    * json转化成的字符串
    * @param URL
    * 请求url
    * @return 返回信息
    */
    public static String doHttpPost(String xmlInfo, String URL) {
    System.out.println("发起的数据:" + xmlInfo);
    byte[] xmlData = xmlInfo.getBytes();
    InputStream instr = null;
    java.io.ByteArrayOutputStream out = null;
    try {
    URL url = new URL(URL);
    URLConnection urlCon = url.openConnection();
    urlCon.setDoOutput(true);
    urlCon.setDoInput(true);
    urlCon.setUseCaches(false);
    urlCon.setRequestProperty("content-Type", "application/json");
    urlCon.setRequestProperty("charset", "utf-8");
    urlCon.setRequestProperty("Content-length",
    String.valueOf(xmlData.length));
    System.out.println(String.valueOf(xmlData.length));
    DataOutputStream printout = new DataOutputStream(
    urlCon.getOutputStream());
    printout.write(xmlData);
    printout.flush();
    printout.close();
    instr = urlCon.getInputStream();
    byte[] bis = IOUtils.toByteArray(instr);
    String ResponseString = new String(bis, "UTF-8");
    if ((ResponseString == null) || ("".equals(ResponseString.trim()))) {
    System.out.println("返回空");
    }
    System.out.println("返回数据为:" + ResponseString);
    return ResponseString;

    } catch (Exception e) {
    e.printStackTrace();
    return "0";
    } finally {
    try {
    out.close();
    instr.close();

    } catch (Exception ex) {
    return "0";
    }
    }
    }

  • 相关阅读:
    支付宝H5 与网页端支付开发
    java图片操作--生成与原图对称的图片
    java 图片的自定义大小
    微信公众号开发(2)---消息的接收发送
    js 创建对象
    jqery多选
    金额大写转换
    js数字转换
    js日期格式转换
    java设计模式
  • 原文地址:https://www.cnblogs.com/java-xz/p/8059317.html
Copyright © 2020-2023  润新知