3

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

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

从官方文档谷歌声明:

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

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

4

1 回答 1

0

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

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

使用以下ClientConnectionManager不设置任何套接字选项的自定义。

使用 HttpClient 4.2.5 和HttpGetAppEngine 1.8.1 上的简单测试——您可能需要覆盖/重新配置更多,具体取决于您对 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.
      }
    };
  }
}
于 2013-06-14T21:55:20.200 回答