2014-01-28 3 views
1

와 비누 플러그인을 사용하여 비누 메서드 호출에 네임 스페이스를 추가하는 방법은Node.js를

나는 비누 Node.js를 사용하고 Node.js를에서 WCF 비누 웹 서비스에 위치를 보내고 싶습니다 tcpdump를 사용

 var localisationMessage = { 
      BlackboxNumber: adc, 
      Heading: heading, 
      Kilomettrage: kilomettrage, 
      Latitude: latitude, 
      Longitude: longitude, 
      PositionDate: '2014-01-28T10:28:09.859225+01:00', //date.toISOString(), 
      Satelite: satelite, 
      Speed: speed, 
     } 

     var args = { 
      mess: localisationMessage 
     } 

     console.dir(args); 

     self.soap_client.SendLocalisation(args, function(err, result) { 
      ... 
     } 

,이 서비스로 전송됩니다 무엇인가 : 플러그인과 같은 원격 메소드를 호출 위의 코드와

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
       xmlns:tns="http://tempuri.org/" 
       xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
       xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"> 
<soap:Header></soap:Header> 
<soap:Body> 
<tns:SendLocalisation xmlns:tns="http://tempuri.org/" xmlns="http://tempuri.org/"> 
<tns:mess> 
<tns:BlackboxNumber>521020</tns:BlackboxNumber> 
<tns:Heading>0</tns:Heading> 
<tns:Kilomettrage>0</tns:Kilomettrage> 
<tns:Latitude>50.82401</tns:Latitude> 
<tns:Longitude>4.30416</tns:Longitude> 
<tns:PositionDate>2014-01-28T10:28:09.859225+01:00</tns:PositionDate> 
<tns:Satelite>7</tns:Satelite> 
<tns:Speed>0</tns:Speed> 
</tns:mess> 
</tns:SendLocalisation> 
</soap:Body> 
</soap:Envelope> 

, 나는 내가해야 거짓 답변을받을 이 (C 번호를 tcpdump를 추적 사용)되어 전송 : 당신은 큰 차이점을 볼 수 있듯이

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
<s:Body><SendLocalisation xmlns="http://tempuri.org/"> 
<mess xmlns:a="http://my_webservice_namespace" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
<a:BlackboxNumber>358696048896800</a:BlackboxNumber> 
<a:Heading>0</a:Heading> 
<a:Kilomettrage>0</a:Kilomettrage> 
<a:Latitude>50</a:Latitude> 
<a:Longitude>3</a:Longitude> 
<a:PositionDate>2014-01-28T10:28:09.859224+01:00</a:PositionDate> 
<a:Satelite>7</a:Satelite> 
<a:Speed>0</a:Speed> 
</mess> 
</SendLocalisation> 
</s:Body> 
</s:Envelope> 

는 비누 전화의 모든 매개 변수가 네임 스페이스에 있다는 것입니다 내가 노드에서 서비스를 사용할 때 정의되지 않은가. js

node.js의 soap 메소드 호출 중에이 네임 스페이스를 어떻게 정의 할 수 있습니까?

+0

자바를 사용하여 WCF 클라이언트에 비누 네임 스페이스를 설정했지만 MimeHeaders를 사용하고 있습니다. 당신이하는 일이 아니지만 내가하고있는 일을보고 싶으면 코드를 게시하게되어 기쁩니다. 바로 알려주세요. – Brian

+0

@ 브라이언 그것은 아마도 필요하지 않습니다, 제 문제는 soap node.js 모듈입니다. –

답변

-2

모든 데이터를 문자열로 보내고 xml을 직접 작성하는 방법을 찾았습니다.

더 좋은 해결책이 있으면 다른 답변을 보내주십시오.

 var args = '<tns:SendLocalisation>' + 
        '<tns:mess xmlns:a="http://my_webservice_namespace" ' + 
        'xmlns:i="http://www.w3.org/2001/XMLSchema-instance">' + 
        '<a:BlackboxNumber>' + adc + '</a:BlackboxNumber>' + 
        '<a:Heading>' + heading + '</a:Heading>' + 
        '<a:Kilomettrage>' + kilomettrage + '</a:Kilomettrage>' + 
        '<a:Latitude>' + latitude + '</a:Latitude>' + 
        '<a:Longitude>' + longitude + '</a:Longitude>' + 
        '<a:PositionDate>' + date.toISOString() + '</a:PositionDate>' + 
        '<a:Satelite>' + satelite + '</a:Satelite>' + 
        '<a:Speed>' + speed + '</a:Speed>' + 
        '</tns:mess>' + 
        '</tns:SendLocalisation>'; 

     self.soap_client.SendLocalisation(args, function(err, result) { 
      ... 
     } 
+0

그것도 나를 위해 woks하지만 그 아주 못생긴 : (.vpulim 그것을 수정합니다 희망! – jdelobel

+0

이것은 잘못되었습니다 –