2013-02-19 267 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支持的所有函數以及函數所需的參數。

    祝你好運