【问题标题】:cURL Adapter uses in zend framework 1.12cURL 适配器在 zend 框架 1.12 中使用
【发布时间】:2013-12-03 10:13:54
【问题描述】:

我有一个使用 curl 用纯 php 编写的项目,它可以工作。现在我想把这个项目移动到 zend 框架 1(我是 zend 的新手)。我尝试通过 Zend_Http_Client_Adapter_Curl 进行连接,但没有获得足够的信息 我的普通 php 代码: 函数 server_com($data, $api_host) {

       $xml = "xml=".($data); 
       $host = $api_host; 
       //curl initialization
       $cpt = curl_init(); 
       //curl url
       curl_setopt($cpt, CURLOPT_URL, "https://$host"); 
       curl_setopt($cpt, CURLOPT_SSL_VERIFYHOST, 1); 
       //Return the response as a string instead of outputting it to the screen
       curl_setopt($cpt, CURLOPT_RETURNTRANSFER, 1); 
       curl_setopt($cpt, CURLOPT_SSL_VERIFYPEER, FALSE); 
       // set this true if you want to send a POST request
       curl_setopt($cpt, CURLOPT_POST, 1);
       //Array of data to POST in request
       curl_setopt($cpt, CURLOPT_POSTFIELDS, array('xml' => $data)); 
       //curl execution  
       $result = curl_exec($cpt);

        RETURN $result; 
    }
    $data = '<?xml version="1.0" encoding="utf-8"?>
        <Request version="1.0">
            <Export mode="UPDATE" type="COREDATA">
                <Login>
                    <User>user</User>
                    <Password>password</Password>
                </Login>
            </Export>
        </Request>
    ';
    // specifies the URL for the request
    $api_host = "demo.api.net/api/";
    $result = server_com($data, $api_host);
    $fh = fopen("va.xml", "w");
    fwrite($fh,$result);
    fclose($fh);

在这里,我在查询请求后创建 va.xml 文件。现在,我希望通过使用 cURL 适配器来等效于 Zend 框架 1,有人可以帮忙吗?我曾尝试在 zend 项目中使用 zend http 客户端(带有 cURL 适配器)来替换旧 php 项目的 cULR 部分。我最近两天卡住了。我非常感谢这方面的帮助。

【问题讨论】:

    标签: php zend-framework curl adapter


    【解决方案1】:

    这只是一个粗略的模型,我没有运行过;但试试看:

    $api = "demo.api.net/api/";
    $config = array(
        'adapter'   => 'Zend_Http_Client_Adapter_Curl',
        'curloptions' => array(
            CURLOPT_SSL_VERIFYHOST => 1,
            CURLOPT_RETURNTRANSFER => 1,
            CURLOPT_SSL_VERIFYPEER => FALSE
        ),
    );    
    
    $client = new Zend_Http_Client($api, $config);
    
    $data = '<?xml version="1.0" encoding="utf-8"?>
        <Request version="1.0">
            <Export mode="UPDATE" type="COREDATA">
                <Login>
                    <User>user</User>
                    <Password>password</Password>
                </Login>
            </Export>
        </Request>
    ';
    
    $client->setConfig(array(
        'maxredirects' => 0,
        'timeout'      => 30)
    );
    $client->setRawData($data, 'text/xml')->request('POST');
    
    $fh = fopen("va.xml", "w");
    fwrite($fh,$client->getLastResponse());
    fclose($fh);
    

    【讨论】:

    • 您好,马特,我得到以下输出:HTTP/1.1 200 OK 日期:2013 年 12 月 5 日星期四 10:36:53 GMT 服务器:Apache/2.2.14 (Ubuntu) X-powered -by:PHP/5.3.2-1ubuntu4.19 变化:Accept-Encoding 内容编码:gzip 内容长度:5760 连接:关闭 内容类型:text/xml @I"0ËÙŒ¹~¿·'_¶ŠôI½¦OKa0â ºôZøžéyL|^JŒŒX 3ElÍ–$¯ qÍaõµ'âË$‚e¾>öñóéŸ4Ÿ‰6FßÞžþm|ŠÝhð5¹þH÷{Ô¸Õ/‡»'¬+E¸¢µ\õ$ËÀ¡cÒšT Ê0M°ÒÐ3cÁg* 你知道为什么会有这个数据吗?
    • 老实说,我不确定是什么原因造成的。不使用 PHP 代码从命令行上的 curl 请求中得到什么?
    猜你喜欢
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 2015-02-14
    相关资源
    最近更新 更多