Android 转到ApacheHttpClient 4.3,如何通过摘要身份验证获得遗留拦截器行为?

Android 转到ApacheHttpClient 4.3,如何通过摘要身份验证获得遗留拦截器行为?,android,apache-httpclient-4.x,androidhttpclient,Android,Apache Httpclient 4.x,Androidhttpclient,我们的Android应用程序已经使用Android捆绑的HttpClient好几年了。我们已经开发了相当多的代码来操纵与服务器产品的交互。每次调用execute(post)时,HttpClient与服务器的交互如下: 客户端向服务器发送HTTP POST 服务器响应401未授权,并提供摘要身份验证质询 客户端将HTTP POST重新发送到服务器,包括摘要身份验证响应(我们在步骤1之前提供了一个CredentialsProvider,因此身份验证响应由HttpClient自动生成) 服务器接受授权

我们的Android应用程序已经使用Android捆绑的HttpClient好几年了。我们已经开发了相当多的代码来操纵与服务器产品的交互。每次调用execute(post)时,HttpClient与服务器的交互如下:

  • 客户端向服务器发送HTTP POST
  • 服务器响应401未授权,并提供摘要身份验证质询
  • 客户端将HTTP POST重新发送到服务器,包括摘要身份验证响应(我们在步骤1之前提供了一个CredentialsProvider,因此身份验证响应由HttpClient自动生成)
  • 服务器接受授权并以200作为响应。调用execute()返回200响应和200响应的正文
  • 我们遇到了很多麻烦。我们尝试过,但拦截器的行为不同。传统上,请求拦截器会触发两次:在步骤1和步骤3。响应拦截器也会发射两次:第2步和第4步。我们只在第2步和第3步需要它们,但在第1步和第4步很容易让拦截器提前退出。由于迁移到HttpClient 4.3,请求拦截器仅在步骤1启动,而我们不需要它

    是否有可以恢复旧行为的配置选项?我们还尝试在自己的HttpClient 4.2副本中进行链接,但这也不顺利


    谢谢大家!

    请求执行管道在很大程度上被重新设计为4.3,以更好地支持透明响应缓存和内容解压缩。从4.3开始,要求验证的请求不再重新设置、重新评估和重新连接。无法使用新的执行管道恢复旧的行为。然而,人们可以使用(或者说滥用)定制的
    身份验证策略
    ,以便在身份验证握手之前拦截请求执行

    请求执行管道在很大程度上被重新设计为4.3,以更好地支持透明响应缓存和内容解压缩。从4.3开始,要求验证的请求不再重新设置、重新评估和重新连接。无法使用新的执行管道恢复旧的行为。然而,人们可以使用(或者说滥用)定制的
    身份验证策略
    ,以便在身份验证握手之前拦截请求执行

    谢谢大家!!我们成功地将4.2客户端作为我们的短期解决方案连接进来。从长远来看,我们将考虑重写以匹配4.3结构,或者转移到其他客户机。谢谢!我们成功地将4.2客户端作为我们的短期解决方案连接进来。从长远来看,我们将考虑重写以匹配4.3结构,或者转移到另一个客户机。