java - 从 PHP 代码调用使用 Axis 创建的 Java Web 服务

标签 java php soap wsdl axis

我正在尝试从 PHP 代码调用使用 Axis 创建的 Java Web 服务。该 Web 服务托管在我的 LAN 上。我能够使用 SoapUI 成功调用 Web 服务。我安装了 PHP Soap 扩展。 但是,我不确定我的 PHP 代码是否正确。下面是我的 PHP 代码。

<?php
 $client = new SoapClient('http://machinename/axis/services/Compiere?wsdl');
 $params = array('in0'=> '124','in1'=>'1');
 $result = $client->__SoapCall('createOrder',array($params));
 print $result->createOrderReturn;
?>

WSDL 如下:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://compservice.com" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://compservice.com" xmlns:intf="http://compservice.com" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->

   <wsdl:message name="createOrderRequest">

      <wsdl:part name="in0" type="xsd:int"/>

      <wsdl:part name="in1" type="xsd:int"/>

   </wsdl:message>

   <wsdl:message name="createOrderResponse">

      <wsdl:part name="createOrderReturn" type="xsd:string"/>

   </wsdl:message>

   <wsdl:portType name="OrderServiceInt">

      <wsdl:operation name="createOrder" parameterOrder="in0 in1">

         <wsdl:input message="impl:createOrderRequest" name="createOrderRequest"/>

         <wsdl:output message="impl:createOrderResponse" name="createOrderResponse"/>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="CompiereSoapBinding" type="impl:OrderServiceInt">

      <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="createOrder">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="createOrderRequest">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://compservice.com" use="encoded"/>

         </wsdl:input>

         <wsdl:output name="createOrderResponse">

            <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://compservice.com" use="encoded"/>

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="OrderServiceIntService">

      <wsdl:port binding="impl:CompiereSoapBinding" name="Compiere">

         <wsdlsoap:address location="http://nuca232/axis/services/Compiere"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:definitions>

我的 PHP 代码是否正确?

请帮忙。 谢谢。

最佳答案

为什么不试试直接模式呢?

 <?php
 $client = new SoapClient('http://machinename/axis/services/Compiere?wsdl');
 $params = array('in0'=> '124','in1'=>'1');
 $result = $client->createOrder( $parms );
 print_r($result);

而不是使用 $client->__SoapCall('createOrder',array($params));

As the manual says: "Usually, in WSDL mode, SOAP functions can be called as methods of the SoapClient object"

关于java - 从 PHP 代码调用使用 Axis 创建的 Java Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297025/

相关文章:

java - 在java中返回动态类型的方法

php - 用于密码存储的 SHA1 哈希有什么好的替代方案?

javascript - JSON 在 js 中给出奇怪的格式化结果,我如何访问数据?

wcf - 使用 OperationContextScope 设置 header 时,IClientMessageInspector BeforeSendRequest 方法不起作用

soap - CXF 响应具有不合格的命名空间

php - 使用 REST 在 PHP 中生成对象

java - Android:在扩展 View 的类中的 startActivity()

java - 如果我不设置 peekHeight,BottomSheetBehavior 不可拖动

java - AuditingEntityListener junit 找不到上下文

php - Woocommerce 默认占位符未在结帐表单中消失