解决php soap webservice 用c++ soap调用的问题

本文介绍了如何解决使用C++调用PHP搭建的SOAP Webservice时遇到的数据类型匹配问题。PHP作为弱类型语言与C++的强类型特性导致了调用上的挑战。作者分享了在研究过程中遇到的PHP SOAP服务器返回错误'Procedure ' not present'的bug,该问题已在PHP 5.2.5中得到修复。提供了PHP SOAP服务器的示例代码和WSDL定义,旨在帮助遇到类似问题的开发者。
摘要由CSDN通过智能技术生成

php是弱数据类型语言,而c++对语言又非常注重数据类型,因此,最近在研究php的soap webservice时遇到很大的问题,目前已经解决。

研究的目标是利用php 搭建webservice, 输入和输出参数都是array类型,元素为string类型。client为c++。

问题伊始,查阅了大量资料,这种模式貌似没有人使用。只有自己跟踪摸索,并且还有个php的bug(SOAP server return Procedure ' ' not present),还好,php team 在最新的5.2.5中已经修复了。

环境:winxp Apache/2.2.8 (Win32) PHP/5.2.5

程序如下:

PHP SOAP SERVER

<? php
class  server {
    
/* *
     * run for webservice
     *
     * @param string[] $inputParam//
     * @return string[]
     
*/
    
public   function  run( $inputParam ){
        
$Param = $inputParam -> param -> string ; // 关键点,获取stdClass对象内容

        
$obj = new  stdClass; // 关键点,设置stdClass对象内容作为返回参数
         $obj -> runResult -> string = array ( $Param [ 0 ] , ' b ' , ' c ' , ' d ' , ' e ' );
        
return   $obj ;
    }
}
$server   =   new  SoapServer( ' ws.wsdl ' ,   array ( ' soap_version '   =>  SOAP_1_2 , ' encoding ' => ' UTF-8 ' ));
$server -> setClass( " server " );
if  ( isset ( $HTTP_RAW_POST_DATA )) {
           
$request   =
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值