Apache HTTP客户端 - 仍然无法从GAE / J使用

时间:2013-05-07 14:25:21

标签: google-app-engine

希望用最近公布的出站套接字API解决这个问题,但事实并非如此 - 尝试建立HTTP连接时出现错误:

  

INFO:连接到目标主机时捕获到I / O异常(java.net.SocketException):操作失败:setSocketOptions:尚未实现

来自Google官方文档的说明:

  

你不能使用大多数getsockopt / setsockopt调用。

问题是,有谁知道现在如何解决? urlfetch不是一个选项,我想与客户端证书建立SSL连接,urlfetch不支持它。

1 个答案:

答案 0 :(得分:0)

如果你只想让HttpClient在AppEngine上运行,试试这个:

HttpClient client = new DefaultHttpClient(new AppEngineClientConnectionManager());

使用以下自定义ClientConnectionManager,但未设置任何套接字操作。

使用HttpClient 4.2.5和AppEngine 1.8.1上的简单HttpGet进行测试 - 您可能需要覆盖/重新配置更多,具体取决于您对HttpClient的使用情况:

class AppEngineClientConnectionManager extends BasicClientConnectionManager {    
  @Override
  protected ClientConnectionOperator createConnectionOperator(SchemeRegistry schreg) {
    return new DefaultClientConnectionOperator(schreg) {
      @Override
      protected void prepareSocket(Socket sock, HttpContext context, HttpParams params)
          throws IOException {
        // Don't set any socket options.
      }
    };
  }
}