java 服务器发送请求数据_java后端发送请求方式

1、jodd.http

public class HttpUtil {

/**

* 发送Get请求

* @param url : 请求的连接

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

* @return

*/

public static String sendGet(String url,Map 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 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 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 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;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Web应用程序中,可以使用HttpServletRequest对象来获取客户端提交的HTTP请求的相关信息。如果要在发送HTTP请求时获取HttpServletRequest对象,则需要在发送请求的代码中创建一个HttpServletRequest对象并填充相关信息。这是不可能的,因为HttpServletRequest对象是由Web容器创建和维护的。 如果您想获取当前请求的HttpServletRequest对象,可以使用ThreadLocal来存储HttpServletRequest对象,然后在需要使用HttpServletRequest对象时从ThreadLocal中获取。您可以创建一个Filter来将HttpServletRequest对象存储在ThreadLocal中,然后在整个请求处理过程中都可以访问该对象。以下是一个获取HttpServletRequest对象的示例代码: ``` public class RequestFilter implements Filter { private static final ThreadLocal<HttpServletRequest> requestHolder = new ThreadLocal<>(); @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; requestHolder.set(httpRequest); try { chain.doFilter(request, response); } finally { requestHolder.remove(); } } public static HttpServletRequest getRequest() { return requestHolder.get(); } } ``` 在上面的代码中,我们创建了一个名为RequestFilter的Filter,并将HttpServletRequest对象存储在ThreadLocal中。在过滤器链中的每个处理程序都可以使用RequestFilter.getRequest()方法来获取HttpServletRequest对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值