2012-05-15 51 views
0

我有一個.net Web服務,它是標準的SOAP,以及我已經添加了POST/GET功能。在.net中,我可以毫無問題地使用Web服務,並且在使用測試POST頁面時,我也可以成功使用Web服務。我有一個來自PHP開發人員的請求,使用我認爲根本不會成爲問題的Web服務,但他無法獲得成功的結果。我從來沒有使用PHP,所以我沒有一個測試項目,我甚至可以使用PHP的一面。我相信這是他使用過的第一個Web服務,所以他自己沒有太多經驗。通過SOAP獲取可用的.NET Web服務

所以我的問題是:

1)作爲.NET開發人員,我很爲難如何甚至開始看問題。我不知道這是我的Web服務中的問題還是他的PHP代碼中的問題。因爲.net和POST的工作我傾向於相信這是他的代碼中的東西,但我無法測試,因爲我不知道PHP。

2)是否有一些標籤或我需要做的事情來讓PHP正確使用我的服務?

3)有什麼工具可以用來檢查與php的兼容性嗎?

4)具有PHP知識的人可以查看他的代碼,看看是否有任何明顯的問題?

求助: 請在答案中看到工作代碼。

+0

使用'回聲$客戶 - > __ getLastRequest();'和顯示它的打印。具體而言,請檢查請求中是否存在三個輸入參數。 – MrCode

+0

@MrCode我試過這個,使用PHP腳本測試頁面(http://writecodeonline.com/php/),結果如下:1db1c37d-b181-443e-8cfb-c4574c1245d955184d93-771a-44d1-ba7a-fd02fe1e15f5。顯然,那裏只有兩個GUID。當然,這可能是問題所在。你看到數組減號代碼有什麼問題嗎? – Essential

+0

'__getLastRequest()'應該爲您提供請求的整個XML。您可能需要查看源代碼才能在瀏覽器中查看它(因爲它可能會隱藏xml)。用完整的XML請求更新問題,以便我們看到整個事情。 – MrCode

回答

1
$function = "soapcall"; 
$array =array("Param1" => "parameter1", "Param2" => "parameter2", "Param3" => "parameter3"); 

$client = new SOAPClient( 
'http://url.asmx?WSDL', 
array( 
    'location' => 'url.asmx?WSDL', 
    'trace' => 1, 
    'style' => SOAP_RPC, 
    'use' => SOAP_ENCODED, 
) 
); 


$result = $client->__soapCall('soapcall', array("parameters"=>$array)); 

foreach($result as $r) 
{ print $r."<br>"; } 
0

與WCF和其他Web服務之間存在一定的互操作性 - 這不僅僅是一件PHP事情,Java庫通常也無法與WCF Web服務一起工作。還有許多其他SO問題的更多信息 - 請參閱邊欄。

您可以嘗試的一件事是SOAPUI(或from sourceforge)以互動方式調用您的Web服務,這應該可以幫助他找出Web服務。

+0

感謝您的SOAPUI鏈接,它看起來會非常方便地幫助診斷。 – Essential

+0

我已經dl'd並安裝了SOAPUI,並且我的Web服務已通過WS-I合規性。我也運行了各種測試/請求,一切似乎按預期工作。在這一點上,我必須假設這是PHP不能很好地與SOAP協同工作的問題。 – Essential

0

我們使用NuSoap進行PHP中的web服務調用,它工作得很好。

+0

謝謝你的建議。我會通過它。 – Essential