4

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

我在控制器上制作了这个功能(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));
}

有时我会收到类似“array(0) { }”的错误,如果我刷新,我会得到所有 HTML 视图,就像我浏览到:http ://services.insw.go.id/web-services/nsw ?operation.invoke=getListGA

我错了,还是遗漏了一些步骤,或者您对如何更改此代码有任何建议?

4

2 回答 2

2

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

  1. 检查肥皂肥皂扩展是否已加载到您的服务器上
  2. 阅读有关 SoapClient http://php.net/manual/en/class.soapclient.php
  3. 查看该 Web 服务是否提供 WSDL(Web 服务描述语言)文件。
  4. 创建一个soap客户端的实例,使用wsdl并调用你需要的函数。

来自 PHP.net 的简单示例

$client = new SoapClient("http://localhost/code/soap.wsdl");
$something =  $client->HelloWorld(array());
echo $something->HelloWorldResult;
于 2013-03-02T13:59:53.240 回答
2

要获得 xml 响应,您不需要 Codeigniter。具体来说,它提供 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.ini 安装soap。

然后你可以通过以下代码得到一个xml响应:

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

$response = $client->getListGA();
echo $response;

这些代码不需要 Codeigniter。

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

祝你好运

于 2013-09-18T01:46:52.723 回答