ApacheHttpClient中的java-Php curl_setopt选项等价物

ApacheHttpClient中的java-Php curl_setopt选项等价物,java,php,Java,Php,我收到一个请求,需要我翻译,或者换句话说,为下面的PHP代码找到等效的java代码。我目前正在使用ApacheHttpClient来处理该任务。我已经调查了4个小时,但没有结果。互联网上有一些关于这方面的文章,但没有确切的答案。我对PHP的了解接近0。任何帮助都将不胜感激 curl_setopt($curl, CURLOPT_FORBID_REUSE, true); curl_setopt($curl, CURLOPT_FRESH_CONNECT, true); curl_setopt($cur

我收到一个请求,需要我翻译,或者换句话说,为下面的PHP代码找到等效的java代码。我目前正在使用ApacheHttpClient来处理该任务。我已经调查了4个小时,但没有结果。互联网上有一些关于这方面的文章,但没有确切的答案。我对PHP的了解接近0。任何帮助都将不胜感激

curl_setopt($curl, CURLOPT_FORBID_REUSE, true);
curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 15);
curl_setopt($curl, CURLOPT_VERBOSE, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
PHP cURL常量的含义 从:

  • 禁止重复使用:
  • 如果为TRUE,则在连接完成时强制显式关闭连接 处理,而不是为重用而合并

  • CURLOPT_FRESH_CONNECT
  • TRUE强制使用新连接而不是缓存连接

  • CURLOPT_RETURNTRANSFER
  • 如果为TRUE,则将传输作为返回值的字符串返回 curl_exec()而不是直接输出

  • CURLOPT_FOLLOWLOCATION
  • 如果在服务器作为一部分发送的任何“Location:”头后面,则为TRUE HTTP头(注意,这是递归的,PHP将遵循尽可能多的 “位置:”发送的标题,除非选择CURLOPT_MAXREDIRS 设置)

  • CURLOPT_超时
  • 允许cURL函数执行的最大秒数

  • CURLOPT_VERBOSE
  • TRUE以输出详细信息。将输出写入STDERR,或 使用CURLOPT_STDERR指定的文件

  • CURLOPT\u SSL\u验证主机
  • 1检查SSL对等中是否存在公用名称 证明书2检查是否存在公共名称,并验证 它是否与提供的主机名匹配。在生产环境中 此选项的值应保持为2(默认值)

  • CURLOPT\u SSL\u VERIFYPEER
  • FALSE停止cURL验证对等方的证书。候补 可以使用指定要验证的证书 可以使用指定CURLOPT_CAINFO选项或证书目录 CURLOPT_CAPATH选项

    ApacheHttpClient做什么
  • 禁止重复使用:每个连接都是一个分离的世界
  • CURLOPT_FRESH_CONNECT:参见1
  • CURLOPT_RETURNTRANSFER:您可以处理所有请求
  • CURLOPT_FOLLOWLOCATION:它自动跟踪重定向
  • CURLOPT_超时:您可以设置它(见下文)
  • CURLOPT_VERBOSE:您可以处理所有日志消息(但您将其设置为false,因此默认行为是ok的)
  • CURLOPT\u SSL\u VERIFYHOST:您可以设置它(见下文)
  • CURLOPT\u SSL\u VERIFYPEER:您将其设置为false,因此不必在意
  • 一些代码
    $theData的内容是什么?您可以忽略第一行,它仅用于设置请求的Url谢谢您的回复。此代码仅相当于curl_setopt($curl,CURLOPT_TIMEOUT,15);不是吗。另一个呢?它是HttpClient的默认设置,不需要再修改了吗?curl_setopt($curl,CURLOPT_bird_REUSE,true);curl_setopt($curl,CURLOPT_FRESH_CONNECT,true);curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);目前,我只想知道我上面提供的PHP代码中每一行的用途,以及如何在Java中执行完全相同的操作。但你给我的代码似乎只是用于curl_setopt($curl,CURLOPT_TIMEOUT,15);。我已经改进了答案。我非常感谢您,对于您的详细答案,我将测试代码并返回给您。
    // set the connection timeout value (CURLOPT_TIMEOUT)
    int timeout = 15;
    RequestConfig config = RequestConfig.custom()
      .setSocketTimeout(timeout * 1000)
      .setConnectTimeout(timeout * 1000)
      .build();
    
    //Create the request
    HttpClient client = HttpClientBuilder
      .create()
      .setDefaultRequestConfig(config)
      //set your verifier (CURLOPT_SSL_VERIFYHOST)
      .setHostnameVerifier(new AbstractVerifier() {
          @Override
          public void verify(final String host, final String[] 
                              cns, final String[] subjectAlts) throws SSLException {
            verify(host, cns, subjectAlts, true);
          }
         }
       )
      .build();
    HttpGet request = new HttpGet(url + theData);
    
    //Get the response
    HttpResponse response = client.execute(request);
    String responseString = EntityUtils.toString(response.getEntity());