2010-04-05 10 views
1

자바에서 SOAP을 사용하려고하는데 시작하는 방법이 없습니다. 다음은 PHP로 작성한 코드 샘플이며 잘 작동합니다. Javascript로이 코드를 작성하고 싶습니다. 다음 코드에서는 www.example.com에서 하나의 API를 호출하고 특정 API를 호출하기 위해 매개 변수를 전달해야합니다.자바 스크립트에서 비누를 사용하는 방법

$soapClient = new SoapClient("https://www.example.com/WSDL");  
    $param_sh = array(); 
    $header = new SoapHeader('http://somesite.com/action/', 'user_credential', $param_sh); 
    $soapClient->__setSoapHeaders(array($header)) 
    $param = array("with some parameter"); 
    $contents = $soapClient->__call("name_of_method",array($param)); 

    print($contents); 

답변

3

브라우저에서 자바 스크립트를 사용한다고 가정하면 SOAP를 사용할 수 없습니다. 브라우저는 같은 원산지 정책 (Jamascript에서 도메인 간 요청을 할 수 없다는 말)에 복종합니다. 즉, 브라우저 페이지가 현재있는 것과 동일한 도메인에있는 경우에만 SOAP 서비스 (또는 HTTP 요청)에 대한 요청을 할 수 있습니다. 이 제한 사항으로 인해 아무도 Javascript에서 SOAP 클라이언트를 구현하는 데 많은 어려움을 겪었습니다 (실제로는 존재하지만).

가장 좋은 건 PHP를 통해 SOAP 호출을 한 다음 자바 스크립트를 통해 웹 페이지에서 실제 SOAP 요청을하는 PHP 페이지로 AJAX 요청을하는 것입니다.

+4

더 현대적인 브라우저가 적절한 헤더를 사용하여, 크로스 도메인 요청을 허용 할 수 있지만 다음을 참조 http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/은 http ://www.w3.org/TR/access-control/ –

+0

또한 브라우저 확장은 JS에서 도메인 간 요청을 허용 할 수 있습니다. – mikemaccana

3

자바 스크립트는 SOAP 라이브러리를 기본적으로 가지고 있지 않지만, Google을 통해 검색 할 수 있습니다 (예 : here). 앨런 (Alan)이 말한 한계를 극복하기 위해 아무 것도하지 않을 것입니다. 웹 서비스는 여전히 원 서버에 있어야합니다. 이 질문에 질문을 받았다 이후 5 년 이상 후

4

지금, 물건의 많은 자바 스크립트에 일어난 그래서 일반적으로 웹 :

  • 당신 출처 간 요청과 최신 브라우저를 보낼 수 있습니다 그걸로 100 % OK입니다. (물론 CORS를 허용하기 위해 서버를 보내는 경우)

  • serverclient side javascript에 대한 라이브러리가 많이 있습니다.

  • 주제에 대한 많은 질문이 StackOverflow입니다.

관련 문제