分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

《用Apache HttpClient实现URL重定向》

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

很多网站都使用了URL重定向技术,把一个原始请求从一个位置路由到另一个位置。原因可能是多方面的,比如域名转发、URL缩写、隐私保护、在同一网站维持相似的域名等。

本文讲述怎样使用Apache HTTPComponents HttpClient实现URL重定向。

本文使用的工具:

1. Apache HttpComponents Client 4.3.1

2. JDK 1.7

1、创建Java项目

项目我命名为HttpClientTest,导入如下JAR包:

2、开发

1)创建和配置CloseableHttpClient

CloseableHttpClient是线程安全的,单个实例可用于处理多个HTTP请求。Http Client会自动处理所有的重定向,除非明确地使用disableAutomaticRetries()关闭自动重定向。

2)使用链接创建HttpGet实例,获取重定向。

3)创建本地HTTP执行上下文HttpClientContext。

4)使用Http Client并传递本地实例HttpClientContext,执行HttpGet请求。

5)成功执行请求后,使用上下文对象来获取所有的重定向位置。

6)关闭响应CloseableHttpResponse,释放资源。

package com.ch.net;import java.io.IOException;import java.net.URI;import java.util.List;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.config.CookieSpecs;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.protocol.HttpClientContext;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;public class UrlRedirectionDemo { // 浏览器Agent public static String USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.151 Safari/535.19";  // 创建并配置HttpClient private static final CloseableHttpClient httpClient = HttpClients   .custom()   .setUserAgent(USER_AGENT)   .setDefaultRequestConfig(     RequestConfig.custom()       .setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY)       .build()).build();  /**  * 根据给定的链接获取所有的重定向位置  * @param link 给定的链接  * @return  * @throws ClientProtocolException  * @throws IOException  */ public List<URI> getAllRedirectLocations(String link) throws ClientProtocolException, IOException{  List<URI> redirectLocations = null;  CloseableHttpResponse response = null;  try{   HttpClientContext context = HttpClientContext.create();   HttpGet httpGet = new HttpGet(link);   response = httpClient.execute(httpGet, context);      // 获取所有的重定向位置   redirectLocations = context.getRedirectLocations();  } finally{   if(response!=null){    response.close();   }  }  return redirectLocations; }  public static void main(String[] args) throws ClientProtocolException, IOException{  // 输入URL  String link = "http://t.cn/zjYwrl3";  UrlRedirectionDemo demo = new UrlRedirectionDemo();  List<URI> allRedirectLocations = demo.getAllRedirectLocations(link);  if(allRedirectLocations!=null){   System.out.println(link);   for(URI uri : allRedirectLocations){    System.out.println("|\nv\n" + uri.toASCIIString());   }  } else{   System.out.println("Not found!");  } }}

如果使用默认的User-Agent设置,有些网站会返回HTTP 500状态码错误。一旦网站返回200状态码而且返回的HTML的内容是“500 server error”时,为保证兼容性,应该使用标准的Web浏览器的User-Agent字符串。

500 – 服务器内部错误

200 - 服务器成功返回网页

3、运行

我在新浪微博中找了个URL缩短的地址作为输入,执行后,果然找到了重定向地址。

控制台输出为:

http://t.cn/zjYwrl3|vhttp://hero.pongo.cn/

4、验证

用在线URL重定向检测工具测试:

验证OK。

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

用Apache HttpClient实现URL重定向相关推荐

  1. java httpclient 重定向_用Apache HttpClient实现URL重定向

    很多网站都使用了URL重定向技术,把一个原始请求从一个位置路由到另一个位置.原因可能是多方面的,比如域名转发.URL缩写.隐私保护.在同一网站维持相似的域名等. 本文讲述怎样使用Apache HTTP ...

  2. HttpClient_用Apache HttpClient实现URL重定向

    很多网站都使用了URL重定向技术,把一个原始请求从一个位置路由到另一个位置.原因可能是多方面的,比如域名转发.URL缩写.隐私保护.在同一网站维持相似的域名等. 本文讲述怎样使用Apache HTTP ...

  3. Apache配置URL重定向

    Apache配置URL重定向 修改/etc/httpd/conf/httpd.conf文件的内容 <Directory "/var/www">AllowOverride ...

  4. Apache URL重定向指南

    Apache URL重定向指南 2004-01-28 21:01:11 Engelschall 阅读 <script src="http://www.meetchinese.com/e ...

  5. Apache HttpClient 4 3开发指南

    <Apache HttpClient 4.3开发指南> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.概述 Apache HttpCli ...

  6. Apache HttpClient

    文章目录 Apache HttpClient 简介 Apache HttpClient特性 使用流程 使用实例 -END- Apache HttpClient 简介 HttpClient 是 Apac ...

  7. 使用ATS中的regex_remap插件实现正则匹配的url重定向

    要点总结如下: 1.正向和反向代理可以同时并存,并且remap可以兼容这两种模式. 2.在使用regex_map时,是借助remap的配置来设置,而且remap.so和regex_remap.so已经 ...

  8. Apache如何将HTTP重定向到HTTPS

    这篇文章将为大家详细讲解有关Apache如何将HTTP重定向到HTTPS,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解.  在Apache中强制将HTT ...

  9. okhttp3测试框架_easy-okhttp: 这是一个对okhttp3进行封装的工具,提供了更为便捷的方法调用。目的是为了替换难用的apache HttpClient。...

    easy-okhttp 简介 项目easy-okhttp是对okhttp网络框架(https://github.com/square/okhttp)上层封装, 支持文件上传和下载,表单(含文件)提交, ...

最新文章

  1. android Base64加密解密
  2. jetbrains从入门到卸载 (前言) 为什么要jetbrains
  3. Flink : UnknownTaskExecutorException: No TaskExecutor registered under
  4. bzoj3144 [Hnoi2013]切糕
  5. JDK源码分析(2)之 Array 相关
  6. 基于spring websocket实现广播及点对点推送功能
  7. 老铁的IT之路,从迷茫“愤青”到团队项目经理,他是如何一步步走出来的?!
  8. RabbitMQ的7种典型使用场景
  9. 理查德·费曼:发现的乐趣
  10. Ubuntu下ATI显卡风扇转速调节脚本
  11. 今日头条秋招前端笔试附加题解题思路
  12. 笔记本高负荷时撞功耗墙、温度墙问题解决方案
  13. 《奋斗》--值得每个正在拼搏的年轻人看看!
  14. 产品经理常用的几种原型软件
  15. 2023最新苹果APP上架App Store流程(超详细)
  16. 中西医结合外科疾病 100247
  17. 第三方互联网支付的主要类型
  18. 解决单元测试时报Could not instantiate问题
  19. gui学生信息管理系统java,Java实训·GUI学生信息管理系统
  20. JZOJ__Day 10:【普及模拟】【USACO】贝茜的晨练计划

热门文章

  1. Spring Boot Initilizr - 使用Spring Boot CLI
  2. Viewer.js 图片预览插件
  3. 给你的网站添加运行时间
  4. “1251 – Client does not support authentication protocol requested by server;consider upgrading MySQL
  5. 通用职责分配软件原则之9-受保护变量原则
  6. python使用md5加密_如何使用Python创建自己的加密货币
  7. gatsby_将Gatsby默认启动程序转换为使用样式化组件
  8. 强化学习q学习求最值_Q学习简介:强化学习
  9. mac 设置终端样式_如何将终端样式设置为freeCodeCamp或任何您想要的样式
  10. golang时间类型转换