上面的请求头中,我们可以看到cookie不同变量之间是用分号间隔的,没有包含phpsessionid。在某些处理http协议的java包中,可以看到对header的生成提供了专门的方法,类似于addHeader()这样的,有的还封装了专门针对cookie的方法,搞得好像cookie和header是两码事,我在用org.apache.http的时候都被搞晕了。http协议很简单,能放数据的地方真的不多,那些额外的数据几乎都是放在header中。

所以我还是觉得在使用那些看似方便的包之前还是从最基础的java.net.HttpURLConnection来实现http联网操作。

使用java.net

使用java.net一般只需引入两个类就可以了:import java.net.HttpURLConnection;

import java.net.URL;

准备

首先你需要一个url,以及字符集charset,url后面的参数为可选的。如下在代码中先定义url、字符集以及由两个参数param1,param2组成的查询参数。String url = "http://example.com";

String charset = "UTF-8";

String param1 = "value1";

String param2 = "value2";

// ...

String query = String.format("param1=%s&param2=%s",

URLEncoder.encode(param1, charset),

URLEncoder.encode(param2, charset));

查询参数都是有name=value这种形式组成的不同的name=value

之间用&分割。参数可以用 URL-encode指定字符集,

发起一个get请求

代码如下:URLConnection connection = new URL(url + "?" + query).openConnection();

connection.setRequestProperty("Accept-Charset", charset);

InputStream response = connection.getInputStream();

// ...

在url与查询条件之间需要用‘?’连接请求头Accept-Charset暗示服务器传入的参数是何种字符集,如果你根本没有参数,可以不用在header中保留Accept-Charset一项。如果你连header都不需要,发起一个get请求甚至可以简化成这样:InputStream response = new URL(url).openStream();

// ...

实际上发出get请求我们还需要指定method为getconnection.setRequestMethod("GET");

但是默认请求就是get的因此上面那行代码也可以不要。

发起post请求

将URLConnection#setDoOutput()设置为true则意味着请求是post的,即使调用了

setDoOutput(true)会使setRequestMethod("GET")无效。URLConnection connection = new URL(url).openConnection();

connection.setDoOutput(true); // Triggers POST.

connection.setRequestProperty("Accept-Charset", charset);

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

OutputStream output = connection.getOutputStream();

try {

output.write(query.getBytes(charset));

} finally {

try { output.close(); } catch (IOException logOrIgnore) {}

}

InputStream response = connection.getInputStream();

// ...

java请求header_java中处理header请求以及跟cookie相关的一些细节相关推荐

  1. HTTP请求方式中8种请求方法(简单介绍)

    HTTP请求方式中8种请求方法(简单介绍) 简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动 ...

  2. 怎么测试ajax get请求,为什么我的AJAX在运行测试时请求dev中的PUT请求,但请求了GET请求?...

    在我的Rails应用程序中,我制作了一个AJAX PUT请求(使用Coffeescript),该请求在我的开发环境中正常工作.当我检查按钮,点击后,会触发使用Firefox的AJAX请求时,它看起来是 ...

  3. html 怎么使用http请求数据类型,HTTP请求方式中8种请求方法(简单介绍)

    HTTP工作原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型.客户端向服务器发送一个请求报文,请求报文包含请 ...

  4. java servlet 请求_Java中前台JSP请求Servlet实例(http+Servlet)

    1.前台jsp代码 himily.jsp,定义了用户名和密码两个输入框,使用post方式提交:/order-web/HimilyServlet其中order-web为站点名称,HimilyServle ...

  5. Spring Boot进阶(17):如何在Swagger2中配置header请求头等参数?若不会,我便手把手教你 | 超级详细,建议收藏

    1. 前言

  6. vue+axios请求时设置request header请求头(带上token)

    vue+axios请求时设置请求头(带上token) 1.在vue中,向后台发送请求,不管是get或post,url要带上userId,headers要带上token值(本地存储的token,wind ...

  7. 查找txt中的中文字符_找出nginx请求日志中某个url请求总次数排名前十的ip地址...

    答案如下: # 利用linux自带命令:sort.awk.grep.head.uniq组合得出相应的答案 awk '{print $1}' | grep 'www.xxxx.com' access.l ...

  8. java response header_java中response.setHeader()

    一秒刷新页面一次 response.setHeader("refresh","1"); 二秒跳到其它页面 response.setHeader("re ...

  9. Android添加Header请求参数实例,java响应header请求实现demo

    1.首先添加AsyncHttpClient.jar包到libs文件夹下 2.初始化请求类以及响应回调类 private AsyncHttpClient client; private AsyncHtt ...

最新文章

  1. 通过实例理解 RabbitMQ 的基本概念
  2. python --- 倒序输出数组中重复的数字
  3. 若一个用户进程通过read系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是( )
  4. Java并发编程高级篇(十):分离任务的执行和结果的处理
  5. 2019-02-28-算法-进化(盛最多水的容器)
  6. Dancing Stars on Me HDU - 5533
  7. 使用jquery解析xml
  8. 前端学习(2752):global全局设置
  9. python爬酷狗音乐_良心推荐!一个Python高手必读的库,真香!
  10. Django模型修改及数据迁移
  11. python详细安装教程-python详细安装pip教程
  12. 2016-6-3Ajax异步复习
  13. 滑动平均_善杰告诉您初中物理学滑动变阻器的各种作用
  14. 标题组合-标题组合软件-免费标题生成组合软件
  15. 数字图像处理 离散余弦变换(DCT)和峰值信噪比(PSNR)
  16. 图的深度优先遍历java代码详解
  17. android hdmi 开发,Android TV HDMI开发
  18. postgresql standard_conforming_strings参数
  19. 华为人报:实事求是科研方向与20年艰苦努力
  20. softmax与交叉墒层的实现原理以及梯度计算

热门文章

  1. 用python画玫瑰花代码-Python | 用turtle库画玫瑰花
  2. python类装饰器详解-Python类中的装饰器在当前类中的声明与调用详解
  3. python在财务中的应用实训报告-实践应用|PyQt5制作雪球网股票数据爬虫工具
  4. python怎么安装numpy库-python怎么安装numpy库
  5. python结果输出到文件-python print输出到文件
  6. python中常见的流程结构-【Python2】04、Python程序控制结构
  7. 学python有哪些书推荐-学python看什么书好?求推荐
  8. python语言if语句-Python if else语句详解
  9. python怎么安装模块-Python模块及其导入
  10. python处理多个excel表-使用python把Excel表格由一个分隔成多个