2013-02-19 234 views
4

我是CI的新手,我想从Web服务WebLogic(位于http://services.insw.go.id/web-services/nsw?operation.invoke=getListGA的服务器)检索XML数据。我想要从服务器获取XML响应。我应该怎么做?CodeIgniter Web服务客户端

我提出的控制器上该功能(resttest.php)

public function getRest() 
{ 
    $this->rest->initialize(array('server' => 'http://services.insw.go.id')); 

    $lartas = $this->rest->get('web-services/nsw',array('operation.invoke' => 'getListGA'),'xml'); 
    die(var_dump($lartas)); 
} 

有时会出现错误,如“阵列(0){}”和,如果我刷新,我得到的所有HTML视图,相同当我浏览到:http://services.insw.go.id/web-services/nsw?operation.invoke=getListGA

我错了,或缺少一些步骤,或者你有任何关于如何更改此代码的建议吗?

回答

2

它看起来好像您的web服务正在使用SOAP(简单对象访问协议)。这不是REST。您将希望使用SoapClient类中内置的Soap扩展。通过这种方式,很容易将XML“请求”发布到该页面,该页面将返回xml结果而不是html视图(我假设)。 SOAP扩展的服务器

  • 阅读有关SoapClient的http://php.net/manual/en/class.soapclient.php
  • 上加载

    1. 检查皂看看是否能Web服务提供了一个WSDL(Web服务描述语言)文件。
    2. 使用wsdl创建肥皂客户端实例并调用您需要的功能。

    从PHP.net

    $client = new SoapClient("http://localhost/code/soap.wsdl"); 
    $something = $client->HelloWorld(array()); 
    echo $something->HelloWorldResult; 
    
  • 2

    简单的例子来获得一个XML响应,你不需要笨。具体来说它提供了WSDL。在http://services.insw.go.id/web-services/nsw你可以找到实例为

    String wsdlUrl = "http://services.insw.go.id:80/web-services/nsw?WSDL"; 
    

    所以WSDL API将http://services.insw.go.id:80/web-services/nsw?WSDL

    然后,您可以查看此网页,看看如何安装肥皂你的PHP。

    然后你就可以得到由下面的代码XML响应:

    $client = new SoapClient('http://services.insw.go.id:80/web-services/nsw?WSDL'); 
    //var_dump($client->__getFunctions()); 
    
    $response = $client->getListGA(); 
    echo $response; 
    

    这些代码并不需要笨。

    注意:$client->__getFunctions()将显示WSDL支持的所有函数以及函数所需的参数。

    祝你好运