【http】HttpComponents —— HTTP请求 深藏阁楼爱情的钟 2022-11-16 13:59 291阅读 0赞 ### 文章目录 ### * 请求的URI * HTTP请求拦截器 所有HTTP请求有一个组合了方法名,请求URI和HTTP协议版本的请求行。 HttpClient支持所有定义在HTTP/1.1版本中的HTTP方法:GET,HEAD,POST,PUT,DELETE,TRACE和OPTIONS。对于每个方法类型都有一个特殊的类:`HttpGet`,`HttpHead`,`HttpPost`,`HttpPut`,`HttpDelete`,`HttpTrace`和`HttpOptions`。 # 请求的URI # 请求的URI是统一资源定位符,它标识了应用于哪个请求之上的资源。HTTP请求URI包含一个协议模式,主机名称,可选的端口,资源路径,可选的查询和可选的片段。 HttpGet httpGet = new HttpGet( "http://www.google.com/search?hl=en&q=httpclient&btnG=Google+Search&aq=f&oq="); HttpClient提供很多工具方法来简化创建和修改执行URI。URI也可以编程来拼装: URIBuilder builder = new URIBuilder(); builder.setScheme("http"); // http:// builder.setHost("www.baidu.com"); // www.baidu.com builder.setPath("/s"); // /s builder.setFragment("foo"); // #foo builder.setQuery("wd=查询测试"); // ?wd=查询测试 // http://www.baidu.com/s?wd=查询测试#foo System.out.println(builder.build()); 查询字符串也可以从独立的参数中来生成: List<NameValuePair> qParams = new ArrayList<NameValuePair>(); qParams.add(new BasicNameValuePair("wd", "测试查询")); URI uri = new URI("http://www.baidu.com/s ?" + URLEncodedUtils.format(qParams, "GBK")); HttpGet httpget = new HttpGet(uri); System.out.println(httpget.getURI()); # HTTP请求拦截器 # HTTP协议拦截器是一个实现了特定HTPP协议方面的惯例。通常协议拦截器希望作用于一个特定头部信息上,或者一族收到报文的相关头部信息,或使用一个特定的头部或一族相关的头部信息填充发出的报文。协议拦截器也可以操纵包含在报文中的内容实体,透明的内容压缩/解压就是一个很好的示例。通常情况下这是由包装器实体类使用了“装饰者”模式来装饰原始的实体完成的。一些协议拦截器可以从一个逻辑单元中来结合。 协议拦截器也可以通过共享信息来共同合作-比如处理状态-通过HTTP执行上下文。协议拦截器可以使用HTTP内容来为一个或多个连续的请求存储一个处理状态。 通常拦截器执行的顺序不应该和它们基于的特定执行上下文状态有关。如果协议拦截器有相互依存关系,那么它们必须按特定顺序来执行,正如它们希望执行的顺序一样,它们应该在相同的序列中被加到协议处理器。 协议拦截器必须实现为线程安全的。和Servlet相似,协议拦截器不应该使用实例变量,除非访问的那些变量是同步的。 这个示例给出了本地内容在连续的请求中怎么被用于持久一个处理状态的: DefaultHttpClient client = new DefaultHttpClient(); HttpContext localContext = new BasicHttpContext(); AtomicInteger count = new AtomicInteger(1); localContext.setAttribute("count", count); client.addRequestInterceptor(new HttpRequestInterceptor() { public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException { AtomicInteger count = (AtomicInteger) context.getAttribute("count"); request.addHeader("Count", Integer.toString(count.getAndIncrement())); } }); HttpGet httpget = new HttpGet("http://localhost/"); for (int i = 0; i < 10; i++) { HttpResponse response = client.execute(httpget, localContext); HttpEntity entity = response.getEntity(); if (entity != null) { EntityUtils.consume(entity); } } 转载链接:[http://www.voidcn.com/article/p-wcdjywrl-nh.html][http_www.voidcn.com_article_p-wcdjywrl-nh.html] [http_www.voidcn.com_article_p-wcdjywrl-nh.html]: http://www.voidcn.com/article/p-wcdjywrl-nh.html
相关 HTTP请求 http请求分为请求头和请求体,请求头的第一行又为请求行,下面分别进行介绍。 请求头 话不多说,我们直接以一个请求头为例子来介绍,我们随便抓取一个包进行演示,下列是我抓 港控/mmm°/ 2023年10月01日 19:42/ 0 赞/ 40 阅读
相关 http请求 ![1392562-20190731084149017-137668602.png][] ![1392562-20190731085742465-259257336.png] 女爷i/ 2023年08月17日 16:08/ 0 赞/ 165 阅读
相关 http请求 http 1、是客服端与服务器传输文本的一种协议 2、http协议是无状态的 3、http协议默认端口是80 4、http协议(加密传输)端口是443 r囧r小猫/ 2023年03月02日 10:53/ 0 赞/ 17 阅读
相关 http请求 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ub ゝ一世哀愁。/ 2022年12月24日 04:51/ 0 赞/ 176 阅读
相关 http请求 一、request请求 ![Center][] 二、response响应 ![Center 1][] 附: ![Center 2][] [ 柔情只为你懂/ 2022年07月15日 22:41/ 0 赞/ 243 阅读
相关 网站的Http请求转为Https请求 一、申请Https证书 [https://common-buy.aliyun.com/?spm=5176.2020520163.cas.1.zTLyhO&commodit 痛定思痛。/ 2022年06月12日 01:43/ 0 赞/ 304 阅读
相关 HTTP请求 原生JS写一个GET请求 let xhr = new XMLHttpRequest(); xhr.open("GET", "/list"); xhr. 小鱼儿/ 2022年05月23日 00:13/ 0 赞/ 362 阅读
相关 Http请求 package fun.lovey.http; import java.io.; import java.net.HttpURLConnec 快来打我*/ 2022年04月04日 13:58/ 0 赞/ 402 阅读
相关 http请求 [2019独角兽企业重金招聘Python工程师标准>>> ][2019_Python_] ![hot3.png][] import java.io.\; im 心已赠人/ 2022年01月15日 01:23/ 0 赞/ 367 阅读
相关 HTTPS请求 hhtps:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP通道, ゝ一纸荒年。/ 2021年09月30日 02:42/ 0 赞/ 404 阅读
还没有评论,来说两句吧...