Bonjour,
Je suis en train de développer un client pour un webservice "spécial", dans le sens où la réponse qu'il renvoie ne contient pas uniquement la réponse XML classique, mais assi des attachements (PDFs, autres XMLs, etc...).
Si je crée mon client "comme d'habitude", et que j'essaie d'appeler le webservice, j'obtiens une erreur du genre :
J'aimerais donc étendre la classe SoapHttpClientProtocol, afin de gérer ces attachements. Je pensais tout naturellement surclasser la méthode ReadResponse, pour lui faire renvoyer la réponse XML comme d'habitude, et stocker les attachements dans un tableau, afin de pouvoir les récupérer ensuite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 failed: System.InvalidOperationException : Le client a trouvé 'multipart/related; type="text/xml"; start="<8E7534CA14E2CE0C1C9326E2DCA8D434>"; boundary="----=_Part_0_2226002.1174890813403"' comme type de contenu de la réponse, alors qu'il attendait 'text/xml'. [...] à System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) à System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
Le problème, c'est que cette méthode ReadResponse doit être une méthode privée de la classe SoapHttpClientProtocol, qui est appelée dans la méthode Invoke. Je vais donc devoir redéfinir la méthode Invoke entièrement, non ? Où puis-je trouver le code de cette méthode ? Je pense qu'elle ne va pas beaucoup différer du code actuel, vu que je pense faire mon traitement des attachement dans ReadResponse...
Qu'en pensez-vous ? Y a-t-il une meilleure manière de faire ?
Merci d'avance!
Partager