램프 서버의 야간 유지 관리 프로세스 중에 SOAP을 통해 웹 서비스에서 데이터를 검색해야합니다. 이 데이터는 데이터베이스에 적용됩니다. 나의 연구는 많은 선택권을 돌려 주었고, 나는 나무가있는 숲을 잃어 버렸다고 생각한다; 부분적으로는 클라이언트와 서버의 용어 및 내가 읽은 기사의 관점이 혼합되어 있기 때문입니다.최상의/적절한 구성이란 무엇입니까? (javascript SOAP)
처음에는 node.js와 node-soap을 설치했습니다. 기능을 테스트하는 간단한 스크립트를 작성했습니다 :
var soap = require('/usr/local/lib/node_modules/npm/node_modules/soap');
var url = "https://api.authorize.net/soap/v1/Service.asmx?WSDL";
soap.createClient(url, function(err, client)
{
if(typeof client == 'undefined')
{
console.log(err);
return;
}
console.log('created');
});
데모 SOAP 소스를 사용하며 잘 작동합니다. 하지만 실제 URL을 사용할 때 나는 5023 오류가 발생합니다 :
[Error: Invalid WSDL URL: https://*****.*****.com:999/SeniorSystemsWS/DataExportService.asmx?WSDL
Code: 503
Response Body: <html><body><b>Http/1.1 Service Unavailable</b></body> </html>]
브라우저에서이 URL에 액세스하면 적절한 WSDL 정의가 반환됩니다. 제공자가 503이 동일한 출처의 정책 위반으로 인한 것임을 알립니다. 다음으로 CORS를 node.js에 추가하는 방법을 연구했습니다. 이것은 내 발을 뒤로 젖히고 질문을 묻습니다 : 나는 올바른 숲에 있습니까? 잘 모르겠습니다. 그래서, 나는 명령 줄, SOAP 가능, CORS app (또는 이에 상응하는) 구성을 찾고있다. 저는 주로 PHP와 Javascript를 사용하는 웹 개발자입니다. 그래서 Javascript는 내가 처음으로 돌아선 곳입니다. 그러나 이것은 요구 사항이 아닙니다. 아이디어? 또는 현재 스크립트 오류에 대한 해결책이 있습니까 (CORS가 포함 된 node.js에서 jQuery를 사용하는 것이 가장 좋습니다)
동일한 출처 정책은 브라우저에서 SOAP 검색 코드를 실행하는 경우에만 의미가 있습니다 ([참조] (http://en.wikipedia.org/wiki/Same-origin_policy)). 서버는 실제로 사용할 수 없다면 503을 반환해서는 안됩니다. CORS는 웹 브라우저 전용이며 NodeJS 코드에는 적용되지 않습니다 ([참조] (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)). – WiredPrairie
WSDL URL이 브라우저에서 제대로 열리므로 사실 503이라는 확신이 들지 않습니다. 아마도 node.js/node-soap에 문제가있을 수 있습니다. 이것이 내 게시물의 이유이며, 제가 의심스런 오류 코드를 진단하기 전에 제가 그 일에 가장 적합한 플랫폼을 사용하고 있는지 확인하고 싶습니다. 아래의 답장 게시물을 참조하십시오 - 나는 더 나은 해결책을 찾았다 고 생각합니다. – wesmat