java请求header_java中处理header请求以及跟cookie相关的一些细节
上面的请求头中,我们可以看到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¶m2=%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相关的一些细节相关推荐
- HTTP请求方式中8种请求方法(简单介绍)
HTTP请求方式中8种请求方法(简单介绍) 简单介绍 HTTP是超文本传输协议,其定义了客户端与服务器端之间文本传输的规范.HTTP默认使用80端口,这个端口指的是服务端的端口,而客户端使用的端口是动 ...
- 怎么测试ajax get请求,为什么我的AJAX在运行测试时请求dev中的PUT请求,但请求了GET请求?...
在我的Rails应用程序中,我制作了一个AJAX PUT请求(使用Coffeescript),该请求在我的开发环境中正常工作.当我检查按钮,点击后,会触发使用Firefox的AJAX请求时,它看起来是 ...
- html 怎么使用http请求数据类型,HTTP请求方式中8种请求方法(简单介绍)
HTTP工作原理 HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端.HTTP协议采用了请求/响应模型.客户端向服务器发送一个请求报文,请求报文包含请 ...
- java servlet 请求_Java中前台JSP请求Servlet实例(http+Servlet)
1.前台jsp代码 himily.jsp,定义了用户名和密码两个输入框,使用post方式提交:/order-web/HimilyServlet其中order-web为站点名称,HimilyServle ...
- Spring Boot进阶(17):如何在Swagger2中配置header请求头等参数?若不会,我便手把手教你 | 超级详细,建议收藏
1. 前言
- vue+axios请求时设置request header请求头(带上token)
vue+axios请求时设置请求头(带上token) 1.在vue中,向后台发送请求,不管是get或post,url要带上userId,headers要带上token值(本地存储的token,wind ...
- 查找txt中的中文字符_找出nginx请求日志中某个url请求总次数排名前十的ip地址...
答案如下: # 利用linux自带命令:sort.awk.grep.head.uniq组合得出相应的答案 awk '{print $1}' | grep 'www.xxxx.com' access.l ...
- java response header_java中response.setHeader()
一秒刷新页面一次 response.setHeader("refresh","1"); 二秒跳到其它页面 response.setHeader("re ...
- Android添加Header请求参数实例,java响应header请求实现demo
1.首先添加AsyncHttpClient.jar包到libs文件夹下 2.初始化请求类以及响应回调类 private AsyncHttpClient client; private AsyncHtt ...
最新文章
- 通过实例理解 RabbitMQ 的基本概念
- python --- 倒序输出数组中重复的数字
- 若一个用户进程通过read系统调用读取一个磁盘文件中的数据,则下列关于此过程的叙述中,正确的是( )
- Java并发编程高级篇(十):分离任务的执行和结果的处理
- 2019-02-28-算法-进化(盛最多水的容器)
- Dancing Stars on Me HDU - 5533
- 使用jquery解析xml
- 前端学习(2752):global全局设置
- python爬酷狗音乐_良心推荐!一个Python高手必读的库,真香!
- Django模型修改及数据迁移
- python详细安装教程-python详细安装pip教程
- 2016-6-3Ajax异步复习
- 滑动平均_善杰告诉您初中物理学滑动变阻器的各种作用
- 标题组合-标题组合软件-免费标题生成组合软件
- 数字图像处理 离散余弦变换(DCT)和峰值信噪比(PSNR)
- 图的深度优先遍历java代码详解
- android hdmi 开发,Android TV HDMI开发
- postgresql standard_conforming_strings参数
- 华为人报:实事求是科研方向与20年艰苦努力
- softmax与交叉墒层的实现原理以及梯度计算
热门文章
- 用python画玫瑰花代码-Python | 用turtle库画玫瑰花
- python类装饰器详解-Python类中的装饰器在当前类中的声明与调用详解
- python在财务中的应用实训报告-实践应用|PyQt5制作雪球网股票数据爬虫工具
- python怎么安装numpy库-python怎么安装numpy库
- python结果输出到文件-python print输出到文件
- python中常见的流程结构-【Python2】04、Python程序控制结构
- 学python有哪些书推荐-学python看什么书好?求推荐
- python语言if语句-Python if else语句详解
- python怎么安装模块-Python模块及其导入
- python处理多个excel表-使用python把Excel表格由一个分隔成多个