2010-07-08 3 views
1

J'ai un service Web tiers (il s'agit d'un service EIP de PeopleSoft) que j'essaie d'appeler .net. J'ai essayé d'utiliser une référence de service et l'ancienne référence Web pour appeler ce service et chaque fois que je l'appelle, je reçois une réponse de «rien» en retour du service. J'ai exécuté l'appel de service via SoapUI et cela fonctionne très bien. J'ai capturé le trafic réseau en utilisant Fiddler et remarquez que lorsque j'appelle le service de SoapUi ou de .Net, j'obtiens le même xml résultant de l'appel. Cela signifie donc que l'appel fonctionne. J'ai activé le traçage et la journalisation au sein de la WCF et je ne vois aucune erreur. Ce n'est pas non plus une exception. Donc, ma théorie est que .net a du mal à traduire le XML du service en arrière dans un objet .net.Le client WCF ne renvoie «rien» en réponse à un service Web tiers

Voici un extrait de mon code:

Dim psclient As New psService.LSS_WEBORDER_PortTypeClient 

Dim psreq As New psService.LSS_WEBORDER_REQ_MSG_TypeShape 
psreq = New psService.LSS_WEBORDER_REQ_MSG_TypeShape 

Dim orderinfo(1) As psService.Transaction_TypeShape 

Dim captureid As String = "WB" & Right(Guid.NewGuid.ToString, 8) 
orderinfo(0) = New psService.Transaction_TypeShape 
orderinfo(0).LSS_WEBOHDR_WRK = New psService.LSS_WEBOHDR_WRKMsgDataRecord_TypeShape 
orderinfo(0).LSS_WEBOHDR_WRK.CAPTURE_ID = New psService.CAPTURE_ID_TypeShape 
orderinfo(0).LSS_WEBOHDR_WRK.CAPTURE_ID.Value = captureid 

psreq.MsgData() = orderinfo 

Dim response As New psService.LSS_WEBORDER_RESP_MSG_TypeShape 
response = psclient.LSS_WEBORDER_OP(psreq) 
response.ToString() <-- this throws an exception because "response" is nothing. 
psclient.Close() 

Toute aide serait appréciée.

Paul

Répondre

1

je me suis dit qu'il aujourd'hui avec un peu d'aide d'un collègue et certains Google en profondeur à creuser.

Fondamentalement, l'espace de noms WSDL de peoplesoft avait été: http://xmlns.oracle.com/Enterprise/Tools/schemas/LSS_WEBORDER_RESP_MSG.v1 Mais après quelques recherches, j'ai remarqué l'espace de noms sur la réponse était différente: http://peoplesoft.com/LSS_WEBORDER_RESP_MSGResponse

J'ai donc deux options. 1. Modifiez l'espace de noms dans le fichier wsdl avant de générer mes classes proxy. 2. Modifiez la classe de proxy reference.vb pour obtenir l'espace de noms correct. Je choisis l'option 1 pour l'instant. J'aimerais qu'il y ait un meilleur moyen.

J'ai de l'aide d'ici: http://www.primordialcode.com/index.php/2008/10/15/invoking-javaaxis-web-service-net-return-null-issue/

Questions connexes