2010-07-20 66 views
0

我已经使用Php Nusoap创建了一个简单的Web服务。它的正常工作,但唯一缺少的是将默认的xmlns属性添加到响应标签。Nusoap - 为响应修复空的xmlns属性

这里是响应的副本:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"> 
    <SOAP-ENV:Body> 
    <LoginResponse xmlns=""> 
     <LoginResult> 
     <register> 
      <customer>d2ff3b88d34705e01d150c21fa7bde07</customer> 
     </register> 
     </LoginResult> 
    </LoginResponse> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

下面是代码:

<?php 

require_once ('nusoap.php'); 
// set namespace 
$ns = 'mynamspace'; 
// set up soap server 
$server = new soap_server(); 
$server->configureWSDL ('testservice', $ns); 
$server->wsdl->schemaTargetNamespace = $ns; 
// define new user data type 


// define results 


$server->wsdl->addComplexType ('customer', 'complexType', 'struct', '', '', array ('customer' => array ('name' => 'customer', 'type' => 'xsd:string'))); 
$server->wsdl->addComplexType ('register', 'complexType', 'struct', '', '', array ('register' => array ('name' => 'register', 'type' => 'tns:customer'))); 
$server->wsdl->addComplexType ('LoginResult', 'complexType', 'struct', '', '', array ('LoginResult' => array ('name' => 'LoginResult', 'type' => 'tns:register'))); 

// register Login function 
$server->register ('Login', // method name 
array ('username' => 'xsd:string', 'password' => 'xsd:string'), // input parameters 
array ('LoginResult' => 'tns:register'), // output parameters 
'urn:mynamespace', // namespace 
'urn:mynamespaceAction', // soapaction 
'document', // style 
'literal', // use 
'Login service for testing'); // documentation 


function Login($username, $password) { 
    if (isset ($username) && isset ($password)) { 
     $hash = md5 ($username); 
     return array ('LoginResult' => array ('register' => array ('customer' => $hash))); 

    } 
} 

// Use the request to (try to) invoke the service 
$HTTP_RAW_POST_DATA = isset ($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; 
$server->service ($HTTP_RAW_POST_DATA); 
?> 

任何帮助是极大的赞赏。

回答

1

我不声称这是特别优雅,但对我来说工作:

我走进nusoap.php并评论这条线(行5925对我来说):

// $ elementNS =“xmlns = \”\“”;

在此之后直接: 如果($不合格& & $使用== '文字'){

+0

非常感谢李,我用同样的方法。 – Rajat 2010-08-25 05:57:04