2010-12-09 58 views
0

J'essaie d'écrire un programme simple qui utilise libcurl pour exécuter HTTP POST en utilisant l'authentification digest.Exécuter HTTP POST avec l'authentification libcurl-digest, en utilisant curl_easy_send curl_easy_recv

Il fonctionne très bien quand je la mise en mémoire tampon XML que je veux envoyer à l'aide curlopt_easy_setopt appropriés appels avec CURLOPT_POSTFIELDS et CURLOPT_POSTFIELDSIZE puis appeler curl_easy_perform.

Cependant, lorsque j'essaie de me connecter après avoir défini CURLOPT_CONNECT_ONLY sur 1, puis en utilisant curl_easy_send - le code retour (pour l'appel d'émission) est CURLE_UNSUPPORTED_PROTOCOL.

(Bien sûr, le nom d'utilisateur, le mot de passe et le schéma d'authentification digest sont définis avec succès avant). En utilisant un sniffer, il est évident que la négociation de résumé n'est pas du tout effectuée.

Comment puis-je toujours utiliser curl_easy_send \ curl_easy_recv avec CURLOPT_CONNECT_ONLY, mais laisser libcurl effectuer la négociation de résumé?

Merci d'avance.

Répondre

0

Eh bien, c'est impossible après tout.

curl_easy_send et curl_easy_recv sont destinés à la mise en œuvre de protocoles personnalisés. Par conséquent, ce que je pense est que la gestion normale du protocole HTTP par libcurl pour curl_easy_perform n'est pas du tout effectuée, donc il n'y a pas de négociation digest \ NTLM \ GSS disponible.

Espérons que cela aidera quelqu'un.