专栏首页chenchenchenJava发送Post请求,获取返回的请求头Header

Java发送Post请求,获取返回的请求头Header

本文实例讲述了JAVA获取HTTP请求头的方法。分享给大家供大家参考,具体如下:

在利用Java网络编程时,利用Java获取HTTP Request 和 Response头字段;

可以利用Java语言根据需要添加自定义的HTTP头字段,而不必拘泥于标准HTTP定义的头字段。

代码如下:

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.junit.Test;
import java.util.*;

@Slf4j
//@RunWith(SpringJUnit4ClassRunner.class)
//@SpringBootTest
public class Test {

  @Test
  public void testRegister(){
//  public static void main(String[] args) throws Exception {

    String url = "localhost:8080/user/register";

    // 请求路径
    HttpPost httpPost=new HttpPost(url);

    // 设置请求头
    httpPost.addHeader("content-type", "application/json;chartset=UTF-8");
    httpPost.addHeader("X-USER-AUTH","USERID=123456");


    // 设置请求体
    List<NameValuePair> list = new LinkedList<>();
    BasicNameValuePair Header = new BasicNameValuePair("Header", "");
    BasicNameValuePair Body = new BasicNameValuePair("Body", "");
    list.add(Header);
    list.add(Body);
    // 使用URL实体转换工具
    UrlEncodedFormEntity entityParam = new UrlEncodedFormEntity(list, "UTF-8");
    httpPost.setEntity(entityParam);

    // 请求连接配置
    RequestConfig config = RequestConfig.custom()
            // 连接请求超时ms
            .setConnectTimeout(1000)
            // 连接超时时间ms
            .setConnectionRequestTimeout(1000)
            // 读取超时ms
            .setSocketTimeout(10 * 1000).build();

    // 设置连接配置
    httpPost.setConfig(config);
    try {

      // 发起请求
      CloseableHttpClient client = HttpClients.createDefault();
      CloseableHttpResponse response = client.execute(httpPost);

      // 获取httpClient响应的请求内容entity
      HttpEntity responseEntity = response.getEntity();
      System.out.println("接口返回参数::"+
              JSON.parseObject(EntityUtils.toString(responseEntity, "UTF-8")));

      // 将返回体的信息转换为字符串
      String mes = EntityUtils.toString(response.getEntity());
      System.out.println("接口返回参数:"+mes);


      // 获取httpClient响应的请求头header
      Header responseHeader = response.getFirstHeader("X-USER-AUTH");
      HeaderElement[] responseHeaderElements = responseHeader.getElements();

      String phone = "";
      String sessionId = "";

      for (int i=0; i<responseHeaderElements.length; i++){
        if ("PHONE".equals(responseHeaderElements[i].getName())){
          phone = responseHeaderElements[i].getValue();
        }
        if ("SESSIONID".equals(responseHeaderElements[i].getName())){
          sessionId = responseHeaderElements[i].getValue();
        }
      }

      response.setHeader(responseHeader.getName(), responseHeader.getValue());

      System.out.println("sessionId:"+sessionId);
      System.out.println("phone:"+phone);


    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

参考:

JAVA获取HTTP请求头的方法示例:https://www.jb51.cc/java/510781.html

HttpClient发起请求,将响应结果(header和entity)设置到response中返回:https://www.cnblogs.com/yadongliang/p/13653323.html

Java用org.apache.http.client的HttpClient发送Post请求 可获取返回Header:https://blog.csdn.net/rosanu_blog/article/details/6934855

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基础篇-Python发送get请求《如何放请求头、参数、获取返回内容》

    pip install -i http://mirrors.aliyun.com/pypi/simple/ requests

    清菡
  • [Go] Go语言实现post请求时发送header头信息

    有些接口需要增加header头信息 , 里面传递token , 这个时候就要求在post的时候能传递自己的header信息

    陶士涵
  • java发送http的get、post请求

    转载自 http://www.cnblogs.com/zhuawang/archive/2012/12/08/2809380.html

    qubianzhong
  • Fiddler 使用fiddler发送捕获的请求及模拟服务器返回

    本例的一个目的是,根据服务器返回js脚本名称,有选择的让浏览器执行本地的js脚本文件。

    授客
  • Python接口自动化——Requests

    前面我们介绍了接口测试工具:Postman和Jmeter。利用接口测试工具上手使用虽然容易,但是还是不够灵活。例如需要界面上各种配置,有时还需限定的语言脚本来辅...

    清风穆云
  • HTTP应知应会知识点复习手册(上)

    上篇主要内容: 状态码、Http1.0/1.1/2.0、Https、GET和POST

    蛮三刀酱
  • 学习Moco接口框架

    Moco框架是Github上的一个开源项目,可以模拟一些http、https、socket协议。

    用户5521279
  • OkHttp学习

    OkHttp 库的设计和实现的首要目标是高效。这也是选择 OkHttp 的重要理由之一。OkHttp 提供了对最新的 HTTP 协议版本 HTTP/2 和 S...

    allsmallpig
  • ajax全套

    对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上。

    菲宇
  • 【Java核心面试宝典】Day18、GET和POST请求都有哪些常见面试题?

    HTTP头部本质上作为一个传递额外重要信息的键值对,主要分为:通用头部、请求头部、响应头部和实体头部。

    灰小猿
  • 34.Ajax

    优先级 如果发送的是【普通数据】 jQuery XMLHttpRequest iframe 如果发送的是【文件】 iframe jQuery(FormData)...

    zhang_derek
  • SAP Spartacus读取User Address的请求发送和接收源头

    文件:projects\core\src\user\store\effects\user-addresses.effect.ts

    Jerry Wang
  • python利用requests模拟ht

    之前一直使用urllib以及urllib2模拟http请求发送,在实际场景中,我们需要造自己定义好的header、body等等,使用urllib很麻烦,很偶然的...

    py3study
  • Python爬虫requests库多种用法实例

      相比直接使用cookie,创建session可以得到新的cookie信息,不会出现cookie失效的情况

    砸漏
  • Spring AOP获取请求URL的入参及返回值(通用方法)

    以下代码为通用的代码,其中json解析使用的是fastJson,可以记录用户访问的ip、url、入参和出参

    日薪月亿
  • 史上最全的AJAX

    对于web应用程序:用户浏览器发送请求.服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML),渲染并显示浏览器上·

    Wyc
  • 原 荐 Java9之HttpClientAP

    石奈子
  • HTTP协议的请求与数据抓包

    输入目标网站,通过http发出GET请求或者POST请求,通过代码找到相应的函数,返回一个相关数据。

    用户6172015
  • Spring3 RestTemplate

    RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpCo...

    HLee

扫码关注云+社区

领取腾讯云代金券