2013-04-15 33 views
5

Tôi chỉ mới bắt đầu với NodeJS và tôi đào sâu vào nói chuyện với dịch vụ SOAP bằng cách sử dụng milewise's node-soap. Tôi đang sử dụng API SOAP xác thực địa chỉ email cơ bản làm trường hợp thử nghiệm của mình.Gửi đối số qua Xà phòng trong Node.js bằng cách sử dụng nút-xà phòng

Tôi dường như không hiểu đúng cách định dạng danh sách đối số của mình.

mã khách hàng SOAP của tôi:

var url = "http://www.restfulwebservices.net/wcf/EmailValidationService.svc?wsdl"; 
soap.createClient(url, function(err, client){ 
    console.log(client.describe().EmailValidationService.BasicHttpBinding_IEmailValidationService.Validate); 
    client.Validate({result:"[email protected]"}, function(err, result){ 
      console.log(result); 
    }); 
}); 

Các client.describe() lệnh nói với tôi như thế nào API muốn đầu vào của nó được định dạng, và làm thế nào nó sẽ trở lại sản lượng của nó. Đây là những gì là nói:

{ input: { 'request[]': 'xs:string' }, output: { 'ValidateResult[]': 'xs:boolean' } }

Tuy nhiên khi tôi gửi những lập luận như một đối tượng: {request:"[email protected]"}

tôi cảm thấy như vấn đề của tôi nằm ở chỗ làm thế nào tôi đang xác định đối tượng các đối số ... những gì làm ngoặc trong request[] có nghĩa là gì?

Trả lời

9

Nó sẽ hoạt động, nếu bạn thêm không gian tên trên đối số yêu cầu. Đây là mã mẫu.

var soap = require('soap'); 

var url = "http://www.restfulwebservices.net/wcf/EmailValidationService.svc?wsdl"; 

var args = {"tns:request":"[email protected]"}; 

soap.createClient(url, function(err, client){ 
    client.EmailValidationService.BasicHttpBinding_IEmailValidationService.Validate(args, function(err, result){ 
      if (err) throw err; 
      console.log(result); 
    }); 
}); 

Tuy nhiên, nó trả về "Truy cập bị từ chối".

Tôi sử dụng soapUI để kiểm tra dịch vụ web này, nó trả về cùng một kết quả.

Tôi thử một dịch vụ web khác và dịch vụ này hoạt động.

var soap = require('soap'); 

var url = "http://www.restfulwebservices.net/wcf/StockQuoteService.svc?wsdl"; 

var args = {"tns:request":"GOOG"}; 

soap.createClient(url, function(err, client){ 

    client.StockQuoteService.BasicHttpBinding_IStockQuoteService.GetStockQuote(args, function(err, result){ 
      if (err) throw err; 
      console.log(result); 
    }); 
}); 
1

ValidateResult yêu cầu mảng. Đó là ý nghĩa của request[]. Nếu nó là một đối tượng, nó chỉ nên được yêu cầu. Do đó, nếu bạn cố gắng args như sau, nó có thể làm việc:

var args = {request[]: ["[email protected]", "another email adress if you 
want"]}; 
-1
I have similar situation where i have accountId[] , i need to pass multiple accountID, when i pass like "tns:accountId[]": [2321,2345325], it failing saying incorrect request parameter, it comes as <tns:accountId[]>2321</tns:accountId[]> 
<tns:accountId[]>2345325</tns:accountId[]>. 

I need to get <tns:accountId>2321</tns:accountId> 
<tns:accountId>2345325</tns:accountId>. When i tried removing "[]", it comes as <accountId> only and it is failing. Can someone please help me? 
+0

này không thực sự trả lời câu hỏi. Nếu bạn có một câu hỏi khác, bạn có thể hỏi nó bằng cách nhấp vào [Hỏi câu hỏi] (https://stackoverflow.com/questions/ask). Bạn cũng có thể [thêm tiền thưởng] (https://stackoverflow.com/help/privileges/set-bounties) để thu hút thêm sự chú ý đến câu hỏi này khi bạn có đủ [danh tiếng] (https://stackoverflow.com/help/ whats-danh tiếng). - [Từ đánh giá] (/ đánh giá/bài đăng chất lượng thấp/17793753) – Psi

Các vấn đề liên quan