2013-03-07 1 views
0

나는 인터넷을 통해 .NET의 웹 서비스에 요청을 보내려고하지만 문제는 WSDL에서 SOAP 주소가 사설 IP 주소가 있습니다보통 SOAP 주소 같은 개인 IP 주소를 가진 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를 사용하고 있으며이를 수정하는 방법을 모르는 것 같습니다.

나는 SOAP::Lite 또는 SOAP::XML::Client::DotNet과 같은 Perl 솔루션을 선호하지만, NuSOAP과 같은 솔루션은 Perl 솔루션보다 쉬울 것이라고 생각했습니다.

답변

0

doterob이 제안한대로 BizTalk는 WSDL에 액세스하여이를 사용할 수 있도록 웹 서비스를 인터넷에 노출해야합니다. 그렇게하면 인터넷에 연결된 주소 (예 : http://web-service.biztalk.com/service.asmx?wsdl)를 노출합니다.

WSDL 사본을 받으면 웹 서비스에서 사용할 수있는 메시지를 만들고 인터넷 연결 주소를 사용하도록 응용 프로그램을 구성합니다 웹 서비스 용. WSDL에 포함 된 로컬 네트워크 주소 (10.10.1.1)는 사용자가 외부 네트워크 (즉, 인터 웹)가 아닌 LAN에서 서비스를 사용한다고 가정합니다.

인터넷에 게시 된 BizTalk 웹 서비스를 여기에 게시하는 것이 보안에 영향을 미치지는 않겠지 만 확실히 권장되지는 않습니다! 그러나 웹 서비스는 최소한 인증서 기반 인증으로 보안을 유지할 것을 권장합니다.

0

WSDL은 브라우저에서 로컬 시스템에 내장되어 있습니다. 당신은 URL을 넣을 경우 Asp.Net에서 WSDL에 액세스 할 수 있습니다

http://10.10.1.1/xxxxx/yyyyyyyyyy.asmx?WSDL 
당신은 자격 증명을 넣어 후 또는 그 이전에 당신이 웹 서비스를 호출 할 때

엔드 포인트 변경 될 수 있습니다, 당신은 특정 URL을 넣어해야

+0

덕분에,하지만 난 모르겠어요. WSDL은 내 것이 아니기 때문에 변경할 수 없습니다. – dayer

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 
);