J'écris un client Qt pour le service Web ASP.NET avec authentification basée sur FORMS. Le service se compose de 3 méthodes: Connexion (utilisateur, passe) Helloworld() - cette méthode renvoie des informations sur l'utilisateur averti. Déconnexion()qt soap client + Service Web ASP.net
Tout fonctionne correctement sur le client dot.net avec CookieContainer.
Le problème commence avec les méthodes HelloWorld(). il renvoie null beause je ne peux pas accéder à la session du serveur.
que je fais ce qui suit:
de la réponse de Login() demande i reçois les biscuits qui sont envoyés au client: QNetworkAccessManager * gestionnaire = http.networkAccessManager(); cookie = manager-> cookieJar();
Lors de l'envoi de la deuxième SOAPRequest pour la méthode HelloWorld j'ajouter ces cookies à QtSoapHttpTransport http:
http.networkAccessManager() -> setCookieJar (cookies)
mais la demande qui va du serveur est vide .
Je suis allé plus loin avec mon enquête et le trafic HTTP surveillé arrivant au serveur de Qt cleint et client .NET.
L'en-tête HTTP pour les requêtes SOAP sont diffeent:
Ceci est demande à venir du client .NET
POST /test/service1.asmx HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.3053) VsDebuggerCausalityData: uIDPoyhZznNkbItPkJSR3EA+zEIAAAAAUkpe7URduE6nmhnT8f uQeqCQBMlX0zxCm65yW4ZPBkUACQAA Content-Type: text/xml; charset=utf-8 SOAPAction: " http://localhost/test/HelloWorld " Host: localhost:8080 Cookie: MyAuthenCookie=DC7620DA79E080FECA37AC6866BF2690D57 B37443506F0D7EEA9DF209827360894D80D37E1B121D73EE44 766BDAEE16BA3FB0E8B95ADB1252AB00A76706930ACDC87CF9 F26744B7E9E3EB7FBB3812997 Content-Length: 291 Expect: 100-continue
et c'est demande provenant du client de savon Qt:
POST /test/Service1.asmx HTTP/1.1 Content-Type: text/xml;charset=utf-8 SOAPAction: http://localhost/test/HelloWorld Content-Length: 350 Cookie: MyAuthenCookie=9AFB2B22EE78D19DFD52BD2193A3D71627C F7303C15E4354E43CC2F31AECBDFFAD09176AA45F33B35C3C3 73891F1FE994580E8EE70FD4D01507670743138E74E152CFF4 EB3C37D90D3A7A0E272A804C3 Connection: Keep-Alive Accept-Encoding: gzip User-Agent: Mozilla/5.0 Host: localhost:8080
Est-ce que tout corps ont une idée de ce qui pourrait être le problème et houe pour le résoudre?
Comment puis-je modifier les en-têtes pour la requête HTTP POST dans l'objet QtSoapHttpTransport afin de le rendre identique à la requête .NET? Merci d'avance, Danny.
Ainsi, la demande de Qt soap client peut appeler votre webmethod HelloWorld - le problème est que dans HelloWorld vous ne pouvez pas accéder à la session? –
Oui. Bien que cela ressemble à l'envoi d'une requête SOAP avec un cookie correct (vous pouvez le voir depuis l'en-tête HTTP), je ne peux toujours pas accéder à la session et récupérer des informations à partir de là. Cordialement, Danny. –