【问题标题】:zend http client current urlzend http 客户端当前 url
【发布时间】:2012-12-19 13:55:03
【问题描述】:

我正在将一个用普通 php 编写的旧项目移植到 zend 框架(我是 zend 新手),我在 zend 项目中使用 zend http 客户端(带有 cURL 适配器)来替换旧 php 项目的 cULR 部分。我被困住了,因为我不知道

的 zend http 客户端替代品
$landing_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

在 cURL 请求期间进行任何重定向后返回登录页面的 url。我可以使用 zend 成功完成以下操作

$config = array(
            'adapter'   => 'Zend_Http_Client_Adapter_Curl',
            'curloptions' => array(
                    CURLOPT_RETURNTRANSFER    =>    true,
                    CURLOPT_FOLLOWLOCATION    =>    true,
            ),
    );
    $redirecting_page_address ='https://www.domain.tld/someredirectingurl';

    $client = new Zend_Http_Client($redirecting_page_address, $config);

    $response = $client->request();

并使用$response->getBody() 获得所需的页面作为输出现在我想知道$redirecting_page_address 重定向到的登陆页面的URL。提前致谢。

【问题讨论】:

    标签: php zend-framework redirect curl


    【解决方案1】:

    正如 Cyril 自己回答的那样,zend 框架 2 (2.2.8 2014-09-17) 中没有用于获取有效 URL 的高级 API。但是,您可以获取原始 curl 句柄并在其上使用原生 PHP 函数:

    // $client would be a Zend_Http_Client
    $handle = $client->getAdapter()->getHandle();
    $effectiveUrl = curl_getinfo($handle, CURLINFO_EFFECTIVE_URL);
    

    【讨论】:

      【解决方案2】:

      在我对此的研究中,我发现在当前版本的 zend 框架 (2.0.6) 之前没有办法做到这一点,也许在未来的版本中可以包含这个工具。

      【讨论】:

        【解决方案3】:

        如果重定向是由标头完成的,您可以使用

        if ($response->isRedirect()){
             $newUrl = $response->getHeader('Location');
        }
        

        【讨论】:

        • 这对我没有帮助,因为在重定向完成后我需要 url,在重定向 Location 标头不可用之后。感谢您的回复。
        猜你喜欢
        • 1970-01-01
        • 2011-07-17
        • 1970-01-01
        • 1970-01-01
        • 2019-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多