Java HttpClient 模拟 IE8 行为

标签 java apache-httpclient-4.x

我正在使用 HttpComponents 项目中的 Apache HttpClient。我向其中添加了自定义信任和 key 管理器来处理双向身份验证(我的信任管理器接受所有内容,而我的 key 管理器始终发送相同的客户端证书)。
我发送以下两个请求:
1. 获取/resource.html(使用 http-equiv="Refresh"元标记重定向到 sth.dll)
2. 获取/scripts/sth.dll

我这样做是为了模拟 IE8 的行为,该行为用于连接到 sth.dll 服务(并且它有效)。 如果我想直接连接到 sth.dll 服务(使用浏览器或 httpclient) 我收到 500 错误:找不到指定的路径。不幸的是,当我使用上述方法手动重定向时,我仍然收到 500 错误

我的问题是我还需要模拟什么才能使该服务正常工作?
问题是否有可能在于 IE 重用了 1 个请求中完成的握手数据,而我的 httpclient 进行了两次握手?如果是,那么如何强制httpclient重用ssl信息

我无法访问服务器,也无法向服务提供商寻求帮助(因为他们只支持通过 ie8 访问)。服务器是IIS/6.0。没有可见的 cookie(我使用 Fiddler 从 IE8 获取流量信息)。

有人能给我一些关于去哪里看的新想法吗?

最佳答案

我认为你关于握手的看法是正确的。

当浏览器首次连接到服务器时创建 HTTP session 。它的 ID 作为特殊的 cookie 返回给客户端。例如,对于基于 java 的服务器,它是 jsessionid。然后客户端在产生进一步的请求时发送厨师。一探究竟。你也应该这样做。我希望如果您在第二个请求中发送 cookie(获取 dll),一切都会正常。

祝你好运。

关于Java HttpClient 模拟 IE8 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7485197/

相关文章:

java - 使用 Varray 将值插入表中

java - Apache Wicket 的优势是什么?

android - Socket.close() 永远不会返回,导致操作系统出现 TimeoutException

java - Apache HttpClient 中的单元测试超时

java - 如何在文件中序列化/保存非常大的 HashMap ,并知道文件中每个键的位置?

使用 <S extends {class}> 的 Java 泛型和不兼容类型

java - 将 PropertyChangeListener 添加到多个 JComboBox

java - 插入文档时达到最大池大小时出现 ConnectionPoolTimeoutException

apache-httpclient-4.x - 如何使用 Apache HTTPComponents HttpClient 在 HTTP 请求中启用 SNI?

java - 在 HttpUrlConnection 中设置自定义套接字实现