java使用Post和Get方式提交Http请求通用详解编程语言

很多api提供了java的post,get方式调用返回结果的接口,以下记录基础通用的发送请求并接收返回参数的方式:

package com.taray.test; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.URL; 
import java.net.URLConnection; 
import java.util.List; 
import java.util.Map; 
 
public class HttpRequest { 
    /** 
     * 向指定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 的形式。 
     * @return 所代表远程资源的响应结果 
     */ 
    public static String sendPost(String url, String param) { 
        PrintWriter out = null; 
        BufferedReader in = null; 
        String result = ""; 
        try { 
            URL realUrl = new URL(url); 
            // 打开和URL之间的连接 
            URLConnection conn = realUrl.openConnection(); 
            // 设置通用的请求属性 
            conn.setRequestProperty("accept", "*/*"); 
            conn.setRequestProperty("connection", "Keep-Alive"); 
            conn.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); 
            // 发送POST请求必须设置如下两行 
            conn.setDoOutput(true); 
            conn.setDoInput(true); 
            //1.获取URLConnection对象对应的输出流 
            out = new PrintWriter(conn.getOutputStream()); 
            //2.中文有乱码的需要将PrintWriter改为如下 
            //out=new OutputStreamWriter(conn.getOutputStream(),"UTF-8") 
            // 发送请求参数 
            out.print(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(); 
            } 
        } 
        System.out.println("post推送结果:"+result); 
        return result; 
    } 
     
    public static void main(String[] args) { 
        //发送 GET 请求 
        String s=HttpRequest.sendGet("http://localhost:6144/Home/RequestString", "key=123&v=456"); 
        System.out.println(s); 
         
        //发送 POST 请求 
        String sr=HttpRequest.sendPost("http://localhost:6144/Home/RequestPostString", "key=123&v=456"); 
        System.out.println(sr); 
    } 
}

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/15325.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论