2011-01-31 3 views
4

웹 서비스를 만들려고하고 있습니다. 그 목적을 위해 여기에 환상적인 튜토리얼을 읽었습니다 : web service tutorial. 이제는 모든 것이 잘 작동하지만, 개발중인 서비스의 경우 .wsdl 파일 내에 정의 된 둘 이상의 함수가 필요합니다. 나는 하나의 함수를 더 추가하려고 시도했는데 오류 메시지가 계속 나타납니다. 내 된 .wsdl이 보이는 방법이다 :.wsdl 파일을 만드는 데 도움이 필요합니다. 하나 이상의 기능이 필요합니다!

<?xml version ='1.0' encoding ='UTF-8' ?> 
<definitions name='Catalog' 
    targetNamespace='http://example.org/catalog' 
    xmlns:tns=' http://example.org/catalog ' 
    xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' 
    xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
    xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' 
    xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' 
    xmlns='http://schemas.xmlsoap.org/wsdl/'> 

<message name='getCatalogRequest'> 
    <part name='catalogId' type='xsd:string'/> 
</message> 
<message name='getCatalogResponse'> 
    <part name='Result' type='xsd:string'/> 
</message> 

<message name='getTestMessageRequest'> 
    <part name='testMessage' type='xsd:string'/> 
</message> 
<message name='getTestMessageResponse'> 
    <part name='resultTestMessage' type='xsd:string'/> 
</message> 


<portType name='CatalogPortType'> 
    <operation name='getCatalogEntry'> 
    <input message='tns:getCatalogRequest'/> 
    <output message='tns:getCatalogResponse'/> 
    </operation> 
    <operation name='getTestMessage'> 
    <input message='tns:getTestMessageRequest'/> 
    <output message='tns:getTestMessageResponse'/> 
    </operation> 
</portType> 



<binding name='CatalogBinding' type='tns:CatalogPortType'> 
    <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/> 

    <operation name='getCatalogEntry'> 
    <soap:operation soapAction='urn:localhost-catalog#getCatalogEntry'/> 
    <input> 
     <soap:body use='encoded' namespace='urn:localhost-catalog' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    </input> 
    <output> 
     <soap:body use='encoded' namespace='urn:localhost-catalog' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    </output> 
    </operation> 

    <operation name='getTestMessage'> 
    <soap:operation soapAction='urn:localhost-catalog#getTestMessage'/> 
    <input> 
     <soap:body use='literal'/> 
    </input> 
    <output> 
     <soap:body use='literal'/> 
    </output> 
    </operation> 
</binding> 

<service name='CatalogService'> 
    <port name='CatalogPort' binding='CatalogBinding'> 
    <soap:address location='http://www.thevinylfactory.com.php5-8.dfw1-2.websitetestlink.com/ws/soap-server.php'/> 
    </port> 
</service> 

</definitions> 

내 비누 server.php

<?php 
function getCatalogEntry($catalogId) { 
    if($catalogId=='catalog1') 
      return "<HTML> 
<HEAD> 
    <TITLE>Catalog</TITLE> 
</HEAD 
<BODY> 
<p> </p> 
<table border> 
<tr><th>CatalogId</th> 
<th>Journal</th><th>Section 
</th><th>Edition</th><th> 
Title</th><th>Author</th> 
</tr><tr><td>catalog1</td> 
<td>IBM developerWorks</td><td> 
XML</td><td>October 2005</td> 
<td>JAXP validation</td> 
<td>Brett McLaughlin</td></tr> 
</table> 
</BODY> 
</HTML>"; 
    elseif ($catalogId='catalog2') 
      return "<HTML> 
<HEAD> 
    <TITLE>Catalog</TITLE> 
</HEAD 
<BODY> 
<p> </p> 
<table border> 

<tr><th>CatalogId</th><th> 
Journal</th><th>Section</th> 
<th>Edition</th><th>Title 
</th><th>Author 
</th></tr><tr><td>catalog1 
</td><td>IBM developerWorks</td> 
<td>XML</td><td>July 2006</td> 
<td>The Java XPath API 
</td><td>Elliotte Harold</td> 
</tr> 
</table> 
</BODY> 
</HTML>"; 
} 

function getTestMessage($testMessage) 
{ 
    return $testMessage."dsa"; 

} 

ini_set("soap.wsdl_cache_enabled", "0"); 
$server = new SoapServer("catalog.wsdl"); 
$server->addFunction(array("getCatalogEntry", "getTestMessage")); 
$server->handle(); 


?> 

내 비누 client.php

<?php 
    $client = new SoapClient("catalog.wsdl"); 
    $catalogId = 'catalog2'; 
    $testMessage = "Some Message"; 
    $response = $client->getCatalogEntry($catalogId); 
    $response2 = $client->getTestMessage($testMessage); 

    echo $response; 
    echo "<br /><br />"; 
    echo $response2; 
?> 

내가지고있어 오류 :

[31-Jan-2011 04:30:29] PHP Fatal error: Uncaught SoapFault exception: [Client] Function ("getTestMessage") is not a valid method for this service in /mnt/stor2-wc2-dfw1/441352/www.thevinylfactory.com/web/content/ws/soap-client.php:6 
Stack trace: 
#0 [internal function]: SoapClient->__call('getTestMessage', Array) 
#1 /mnt/stor2-wc2-dfw1/441352/www.thevinylfactory.com/web/content/ws/soap-client.php(6): SoapClient->getTestMessage('Some Message') 
#2 {main} 
    thrown in /mnt/stor2-wc2-dfw1/441352/www.thevinylfactory.com/web/content/ws/soap-client.php on line 6 

도와 주실 수 있습니까? 미리 감사드립니다.

답변

3

좋아요. 해결책을 찾았습니다. wsdl 파일이 캐싱 된 것으로 보입니다. 다른 사람이 비슷한 문제를 경험하게 될 경우에 대비해 게시하고 있습니다. .htaccess 파일에 다음 행을 추가하면됩니다.

php_value soap.wsdl_cache_enabled 0 
+0

.htaccess 파일을 찾을 수있는 곳은 XAMPP입니다. – Biranchi

관련 문제