2013-04-25 7 views
0

NuSOAP을 사용하여 작성한 PHP 비누 웹 서비스가 있습니다. 'test.php'파일을 사용하여 브라우저에서 'http://www.mydowmain.com:8080/webservice/5/test.php'으로 테스트합니다.NuSOAP을 사용하는 PHP SOAP 웹 서비스는 WSDL이 구성된 경우 아무런 결과도 제공하지 않습니다.

내 코드 :

webservice.php

<?php 
require_once('../lib/nusoap.php'); 

$server = new nusoap_server(); 

$server ->configureWSDL('server', 'urn:server'); //this line causes to 'no result' 
$server ->wsdl->schemaTargetNamespace = 'urn:server'; //this line causes to 'no result' 
$server -> register('getData'); 

function getData() 
{ 
    $items = array(array("item1"),array("item2")); 
    return $items; 
} 

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ''; 
$server ->service($HTTP_RAW_POST_DATA); 
?> 

test.php

<?php 
    require_once('../lib/nusoap.php'); 
    $client = new nusoap_client("http://www.mydowmain.com:8080/webservice/5/webservice.php?wsdl"); 

    $result = $client ->call('getData'); 

    print_r($result); 
?> 

문제 :

나는이 라인

$server ->configureWSDL('server', 'urn:server'); 
$server ->wsdl->schemaTargetNamespace = 'urn:server'; 

을 제거하면 그것은 나에게 결과 벌금을 보여줍니다. 그렇지 않으면 빈 화면이 나타나서 아무것도 얻지 못합니다. 하지만 실제로 WSDL을 구성해야합니다.

은 어떻게 WSDL 구성됩니다 그래서 webservice.php을 편집 할 수 있습니다와 나는 test.php에 결과 배열을받을 수 있나요? 이 변경

답변

0

시도 :이 속으로

$server ->wsdl->schemaTargetNamespace = 'urn:server'; 

: 그 위에

$server ->wsdl->schemaTargetNamespace = $namespace; 

및 정의 $ 네임 스페이스. 그것은 저를위한 간계를했다.

require_once("lib/nusoap.php"); 
$namespace = "http://localhost:8080/Testservice/service.php?wsdl"; 
$server = new soap_server(); 
$server->configureWSDL("TestService"); 
$server->wsdl->schemaTargetNamespace = $namespace; 
+0

그래서 네임 스페이스는'$ namespace = "urn : server"'내가 맞습니까? –

+0

내 대답이 업데이트되었습니다. – Matheno

1

당신이 추가 할 수있는 클라이언트에 대한 오류 정보를 보려면 : 다음 server.php에서, 그 후

$result = $client->call('getData'); 

$err = $client->getError(); 
if ($err) { 
// Display the error 
echo '<h2>Error</h2>' . $err; 
// At this point, you know the call that follows will fail 
     exit(); 
} 
else 
{ 
echo $result; 
} 

을, 어쩌면 레지스터

내 NuSOAP의 웹 서비스의 내 코드입니다 반환 값에 대한 자세한 정보가 필요합니다.

$server->register('getData', 
    array("response"=>"xsd:string"), 
    'http://www.mydowmain.com:8080' 
);