2013-03-07 62 views
0

我想請求發送到通過互聯網.NET Web服務,但問題是WSDL中的SOAP地址具有私有IP地址:具有私有IP地址(如SOAP地址)的WSDL是否正常?

<soap:address location="http://10.10.1.1/xxxxx/yyyyyyyyyy.asmx" /> 

當我嘗試發送一些請求,PHP和的NuSOAP例如,我得到一個錯誤與此位置:

HTTP Error: Couldn't open socket connection to server http://10.10.1.1/xxxxx/yyyyyyyyyy.asmx , Error (110): Connection timed out

這是正常的嗎?另一方面,它使用的是BizTalk,我認爲他們不知道如何解決它。

我更喜歡Perl解決方案,如SOAP::LiteSOAP::XML::Client::DotNet,但我認爲像NuSOAP這樣的解決方案比Perl解決方案更容易。

回答

0

正如Doterob所建議的,BizTalk需要將Web服務公開給互聯網,以便您能夠訪問WSDL並使用它。在這樣做時,他們將公開一個面向互聯網的地址(例如http://web-service.biztalk.com/service.asmx?wsdl

一旦您擁有了WSDL的副本,就可以創建一條消息供Web服務使用,並將應用程序配置爲使用面向互聯網的地址爲網絡服務。包含在WSDL中的本地網絡地址(10.10.1.1)假定您將使用來自LAN的服務,而不是外部網絡(即interweb)。

我不會進入安全含義堅持在互聯網上生活的BizTalk網絡服務姿勢在這裏,但這當然不建議最佳實踐!不過,我會建議網絡服務以基於證書的身份驗證保證最低限度。

0

WSDL在瀏覽器中內置了本地機器。如果你把網址,您可以訪問到WSDL在Asp.Net

http://10.10.1.1/xxxxx/yyyyyyyyyy.asmx?WSDL 

端點可以改變,你應該把具體的網址,當你調用Web服務,之後或之前你把憑證

+0

謝謝,但我不知道是否我一直誤解。我無法更改WSDL,因爲它不是我的。 – dayer 2013-03-07 16:15:50

0

我已經通過XML::Compile::WSDL11實現了從私有地址到公有地址的端點更改。

事情是這樣的:

my $wsdlfile = XML::LibXML->new->parse_file("http://$publicIP/wsdl"); 
my $wsdl = XML::Compile::WSDL11->new($wsdlfile); 
my $call = $wsdl->compileClient(
    'operation', 
    server => $publicIP # This change the server address to a specified address 
);