java- Php curl_setopt选项等效于apache HttpClient

时间:2014-10-22 09:32:04

标签: java php

我收到了一个请求,需要我翻译,换句话说,找到以下PHP代码的等效java代码。我目前使用Apache HttpClient来处理任务。我调查了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);

1 个答案:

答案 0 :(得分:0)

PHP cURL常量的含义

来自documentation

  1. CURLOPT_FORBID_REUSE
  2.   

    TRUE以强制连接在完成时显式关闭   处理,而不是合并重用。

    1. CURLOPT_FRESH_CONNECT
    2.   

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

      1. CURLOPT_RETURNTRANSFER
      2.   

        TRUE以将返回值作为字符串返回   curl_exec()而不是直接输出。

        1. CURLOPT_FOLLOWLOCATION
        2.   

          是否可以关注任何"位置:"服务器作为一部分发送的标头   HTTP标头(注意这是递归的,PHP将遵循尽可能多的   "地点:"它被发送的标头,除非CURLOPT_MAXREDIRS是   设定)。

          1. CURLOPT_TIMEOUT
          2.   

            允许cURL函数执行的最大秒数。

            1. CURLOPT_VERBOSE
            2.   

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

              1. CURLOPT_SSL_VERIFYHOST
              2.   

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

                1. CURLOPT_SSL_VERIFYPEER
                2.   

                  FALSE阻止cURL验证对等方的证书。备用   可以使用指定要验证的证书   可以使用CURLOPT_CAINFO选项或证书目录指定   CURLOPT_CAPATH选项。

                  Apache HttpClient做什么

                  1. CURLOPT_FORBID_REUSE :每个连接都是分开的世界;
                  2. CURLOPT_FRESH_CONNECT :见1.。
                  3. CURLOPT_RETURNTRANSFER :您可以处理所有请求;
                  4. CURLOPT_FOLLOWLOCATION :自动跟踪重定向;
                  5. CURLOPT_TIMEOUT :您可以设置它(见下文);
                  6. CURLOPT_VERBOSE :您可以处理所有日志消息(但您将其设置为false,因此默认行为正常);
                  7. CURLOPT_SSL_VERIFYHOST :您可以设置它(见下文);
                  8. CURLOPT_SSL_VERIFYPEER :您将其设置为false,因此请不要关心。
                  9. 一些代码

                    // 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());