在ZF2中实现curl

邓恩GB

我正在尝试通过建立与两个zf2应用程序的通信curl。所需的响应在中xml到目前为止,我可以建立连接并xml作为响应返回。

问题

问题是,我无法迭代xml response我的代码。每当我var_dump并查看我的源代码时$response->getContent,我都会得到

string(142) "<?xml version="1.0" encoding="UTF-8"?>
<myxml>
<login>
<status>success</status>
<Err>None</Err>
</login>
</myxml>
"

当我只是var_dump我的时候$response,我得到一个object(Zend\Http\Response)#440

simplexml_load_string($response->getContent()) 给我空白页。

print $data->asXML()给我Call to a member function asXML() on a non-object错误。我在这里做错了什么?

卷曲请求动作

    $request = new \Zend\Http\Request();
    $request->getHeaders()->addHeaders([
        'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'
    ]);
    $request->setUri('http://localhost/app1/myaction');
    $request->setMethod('POST'); //uncomment this if the POST is used
    $request->getPost()->set('curl', 'true');
    $request->getPost()->set('email', '[email protected]');
    $request->getPost()->set('password', '2014');

    $client = new Client;
    $client->setAdapter("Zend\Http\Client\Adapter\Curl");

    $response = $client->dispatch($request);

    var_dump($response);//exit;
    //$response = simplexml_load_string($response->getContent());
    //echo $response;exit;
    return $response;

卷曲响应动作

         $php_array=array(
         'login'=>array(
         'status'=>'failed','Err'=>'Unauthorised Access'
         )
         );
         $Array2XML=new \xmlconverter\Arraytoxml;
         $xml = $Array2XML->createXML('myxml', $php_array);
         $xml = $xml->saveXML();
         //echo $xml;exit;
            $response = new \Zend\Http\Response();
            $response->getHeaders()->addHeaderLine('Content-Type', 'text/xml; charset=utf-8');
            $response->setContent($xml);
            return $response;

Array2XML可以发现这里

有任何想法吗?

哈克雷

当我简单地var_dump $ response时,我得到一个对象(Zend \ Http \ Response)#440

这是正确的,它告诉您的类型$response

simplexml_load_string($ response-> getContent())给了我空白页。

这是正确的,因为尽管此函数可以返回可表示为空字符串的值,但它不会自行创建任何输出,因此可以期望空白页。

有任何想法吗?

首先,您应该针对您的问题制定正确的问题陈述。到目前为止,您所说的所有内容都是可以预期的,因此您的问题充其量是不清楚的。

其次,您需要进行适当的错误处理并进行一些安全的编程:

$buffer = $response->getContent();
if (!is_string($buffer) || !strlen($buffer) || $buffer[0] !== '<') {
    throw new RuntimeException('Need XML string, got %s', var_export($buffer, 1));
}
$xml = simplexml_load_string($buffer);
if (false === $xml) {
    throw new RuntimeException('Unable to parse response string as XML');
}

这是:对于您获得的每个参数,请对其进行验证。对于收到的每个函数或方法结果,请检查后置条件。在调用函数或方法之前,请检查每个参数的前提条件。

将错误记录到文件中并处理未捕获的异常。

还有一个想法:将数组的使用放到XML函数中,并用要维护的库替换。在您的情况下,仅使用自己的SimpleXML来创建XML可能会更容易。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章