java后端发送请求方式

1、jodd.http

public class HttpUtil {

    /**

    * 发送Get请求

    * @param url : 请求的连接

    * @param params : 请求参数,无参时传null

    * @return

    */

    public static String sendGet(String url,Map<String,String> params){

        HttpRequest request = HttpRequest.get(url); 

        if(params!=null) {

            request.query(params);

        }

        HttpResponse response = request.send();

        String respJson = response.bodyText();

        return respJson;

    }

    /**

    * 发送Post请求-json数据

    * @param url : 请求的连接

    * @param params :  请求参数,无参时传null

    * @return

    */

    public static String sendPostToJson(String url,Map<String,Object> params ){

        HttpRequest request = HttpRequest.post(url); 

        request.contentType("application/json");

        request.charset("utf-8");

        //参数详情

        if(params!=null) {

            request.body(JSON.toJSONString(params));

        }

        HttpResponse response = request.send();

        String respJson = response.bodyText();

        return respJson;

    }

    /**

    * 发送Post请求

    * @param url : 请求的连接

    * @param params :  请求参数,无参时传null

    * @param paramsDatails : 参数详情,没有时传null

    * @return

    */

    public static String sendPost(String url,Map<String,Object> params ){

        HttpRequest request = HttpRequest.post(url); 

        //参数详情

        if(params!=null) {

            request.form(params);

        }   

        HttpResponse response = request.send();

        String respJson = response.bodyText();

        return respJson;

    }

    /**

    * 发送Delete请求

    * @param url : 请求的连接

    * @param params :  请求参数,无参时传null

    * @return

    */

    public static String sendDelete(String url,Map<String,Object> params){

        HttpRequest request = HttpRequest.delete(url); 

        if(params!=null) {

            request.form(params);

          }

        HttpResponse response = request.send();

        String respJson = response.bodyText();

        return respJson;

    }

    // 测试

    public static void main(String[] args) {

        //Get

        String responbody = HttpUtil.sendGet("https://www.baidu.com", null);

        System.out.println(responbody);

    }

}

2、URL连接

package com.powerX.httpClient;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

public class HttpClient {

    public static String doGet(String httpurl) {

        HttpURLConnection connection = null;

        InputStream is = null;

        BufferedReader br = null;

        String result = null;// 返回结果字符串

        try {

            // 创建远程url连接对象

            URL url = new URL(httpurl);

            // 通过远程url连接对象打开一个连接,强转成httpURLConnection类

            connection = (HttpURLConnection) url.openConnection();

            // 设置连接方式:get

            connection.setRequestMethod("GET");

            // 设置连接主机服务器的超时时间:15000毫秒

            connection.setConnectTimeout(15000);

            // 设置读取远程返回的数据时间:60000毫秒

            connection.setReadTimeout(60000);

            // 发送请求

            connection.connect();

            // 通过connection连接,获取输入流

            if (connection.getResponseCode() == 200) {

                is = connection.getInputStream();

                // 封装输入流is,并指定字符集

                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

                // 存放数据

                StringBuffer sbf = new StringBuffer();

                String temp = null;

                while ((temp = br.readLine()) != null) {

                    sbf.append(temp);

                    sbf.append("\r\n");

                }

                result = sbf.toString();

            }

        } catch (MalformedURLException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            // 关闭资源

            if (null != br) {

                try {

                    br.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

            if (null != is) {

                try {

                    is.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

            connection.disconnect();// 关闭远程连接

        }

        return result;

    }

    public static String doPost(String httpUrl, String param) {

        HttpURLConnection connection = null;

        InputStream is = null;

        OutputStream os = null;

        BufferedReader br = null;

        String result = null;

        try {

            URL url = new URL(httpUrl);

            // 通过远程url连接对象打开连接

            connection = (HttpURLConnection) url.openConnection();

            // 设置连接请求方式

            connection.setRequestMethod("POST");

            // 设置连接主机服务器超时时间:15000毫秒

            connection.setConnectTimeout(15000);

            // 设置读取主机服务器返回数据超时时间:60000毫秒

            connection.setReadTimeout(60000);

            // 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true

            connection.setDoOutput(true);

            // 默认值为:true,当前向远程服务读取数据时,设置为true,该参数可有可无

            connection.setDoInput(true);

            // 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。

            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

            // 设置鉴权信息:Authorization: Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0

            connection.setRequestProperty("Authorization", "Bearer da3efcbf-0845-4fe3-8aba-ee040be542c0");

            // 通过连接对象获取一个输出流

            os = connection.getOutputStream();

            // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的

            os.write(param.getBytes());

            // 通过连接对象获取一个输入流,向远程读取

            if (connection.getResponseCode() == 200) {

                is = connection.getInputStream();

                // 对输入流对象进行包装:charset根据工作项目组的要求来设置

                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));

                StringBuffer sbf = new StringBuffer();

                String temp = null;

                // 循环遍历一行一行读取数据

                while ((temp = br.readLine()) != null) {

                    sbf.append(temp);

                    sbf.append("\r\n");

                }

                result = sbf.toString();

            }

        } catch (MalformedURLException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            // 关闭资源

            if (null != br) {

                try {

                    br.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

            if (null != os) {

                try {

                    os.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

            if (null != is) {

                try {

                    is.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

            // 断开与远程地址url的连接

            connection.disconnect();

        }

        return result;

    }

}

3、CloseableHttpClient 

/**

* POST---有参测试(普通参数)

*

* @date 2018年7月13日 下午4:18:50

*/

@Test

public void doPostTestFour() {

// 获得Http客户端(可以理解为:你得先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)

CloseableHttpClient httpClient = HttpClientBuilder.create().build();

// 参数

StringBuffer params = new StringBuffer();

try {

// 字符数据最好encoding以下;这样一来,某些特殊字符才能传过去(如:某人的名字就是“&”,不encoding的话,传不过去)

params.append("name=" + URLEncoder.encode("&", "utf-8"));

params.append("&");

params.append("age=24");

} catch (UnsupportedEncodingException e1) {

e1.printStackTrace();

}

// 创建Post请求

HttpPost httpPost = new HttpPost("http://localhost:12345/doPostControllerFour" + "?" + params);

// 设置ContentType(注:如果只是传普通参数的话,ContentType不一定非要用application/json)

httpPost.setHeader("Content-Type", "application/json;charset=utf8");

// 响应模型

CloseableHttpResponse response = null;

try {

// 由客户端执行(发送)Post请求

response = httpClient.execute(httpPost);

// 从响应模型中获取响应实体

HttpEntity responseEntity = response.getEntity();

System.out.println("响应状态为:" + response.getStatusLine());

if (responseEntity != null) {

System.out.println("响应内容长度为:" + responseEntity.getContentLength());

System.out.println("响应内容为:" + EntityUtils.toString(responseEntity));

}

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (ParseException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

// 释放资源

if (httpClient != null) {

httpClient.close();

}

if (response != null) {

response.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

4、HttpClient 


HttpClient client =newHttpClient();

GetMethod method =newGetMethod(url);


if(null== url || !url.startsWith("http")) {

thrownewException("请求地址格式不对");

        }  

// 设置请求的编码方式

if(null!= charset) {

method.addRequestHeader("Content-Type","application/x-www-form-urlencoded; charset="+ charset);

}else{

method.addRequestHeader("Content-Type","application/x-www-form-urlencoded; charset="+"utf-8");

        }  

intstatusCode = client.executeMethod(method);


if(statusCode != HttpStatus.SC_OK) {// 打印服务器返回的状态

System.out.println("Method failed: "+ method.getStatusLine());

        }  

// 返回响应消息

byte[] responseBody = method.getResponseBodyAsString().getBytes(method.getResponseCharSet());

// 在返回响应消息使用编码(utf-8或gb2312)

String response =newString(responseBody,"utf-8");

System.out.println("------------------response:"+ response);

// 释放连接

        method.releaseConnection();  

returnresponse;

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容