2013-12-23 2 views
0

램프 서버의 야간 유지 관리 프로세스 중에 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를 사용하는 것이 가장 좋습니다)

+0

동일한 출처 정책은 브라우저에서 SOAP 검색 코드를 실행하는 경우에만 의미가 있습니다 ([참조] (http://en.wikipedia.org/wiki/Same-origin_policy)). 서버는 실제로 사용할 수 없다면 503을 반환해서는 안됩니다. CORS는 웹 브라우저 전용이며 NodeJS 코드에는 적용되지 않습니다 ([참조] (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)). – WiredPrairie

+0

WSDL URL이 브라우저에서 제대로 열리므로 사실 503이라는 확신이 들지 않습니다. 아마도 node.js/node-soap에 문제가있을 수 있습니다. 이것이 내 게시물의 이유이며, 제가 의심스런 오류 코드를 진단하기 전에 제가 그 일에 가장 적합한 플랫폼을 사용하고 있는지 확인하고 싶습니다. 아래의 답장 게시물을 참조하십시오 - 나는 더 나은 해결책을 찾았다 고 생각합니다. – wesmat

답변

0

나는이 작업에 더 나은 접근 방법이 있다고 생각한다. 주말에 PHP에 완전한 SOAP 클라이언트가 있다는 것을 알았습니다. PHP에서 동일한 기본 로그인 스크립트를 작성 했으므로 제대로 실행됩니다. loginExt에 대한 응답으로 유효한 인증 코드를 얻습니다 (추가 요청에서 필요함). 따라서 작동중인 것처럼 보입니다. 실제로 웹 서비스를 사용할 수 있는지 확인한 후 여기에 의견을 말하겠습니다.

+0

PHP SOAP은 매우 잘 작동합니다. 가장 큰 장애물은 매개 변수의 데이터 형식을 연구하는 것입니다. 보너스로 시스템의 기존 언어 선택 (PHP)에 맞습니다. – wesmat

0

대부분이 오류는 웹 사이트 서버에 속합니다. 이 링크를 통해 가면 도움이 될 것입니다.

http://pcsupport.about.com/od/findbyerrormessage/a/503error.htm

또한 당신은 웹 브라우저에서 WSDL을 열 비누를 검색 할 수 있습니다 주소 위치 태그를 서비스에서. 올바른 URL을 찾아 내면 스크립트에서 호출하려고합니다. 브라우저에서이 URL에 직접 액세스하여 무엇을 얻고 있는지 확인하십시오.

+0

불행히도 내 서버가 아닙니다. 전혀 액세스 할 수 없습니다. 나는 공급자에게이 대화를 지시했고 이것이 진정으로 문제인지를 결정하게 할 것입니다. – wesmat

+0

그런 다음 자격 증명이없는 경우 어떻게이 웹 서비스에 액세스해야합니까? – kingAm

+0

죄송합니다. "이 오류는 귀하의 웹 사이트 서버에 속합니다"라는 재생 내용을 너무 많이 읽었습니다. 서버 백엔드에 대한 액세스 권한이 없으므로 로그가없고 구성 파일도 없습니다. 원래 게시물에 명시된 바와 같이 URL은 웹 브라우저를 통해 액세스 할 때 완전하고 적절한 WSDL 정의를 엽니 다. 오류는 SOAP 스크립트를 통해 액세스 할 때 발생합니다. – wesmat

관련 문제