2010-04-21 9 views
1

J'ai besoin d'envoyer un fichier à un serveur web en utilisant libcurl. J'ai vu l'un des exemples sur le site curl et j'essaie de l'implémenter. c'est l'exemple postit2.c. Quelqu'un peut-il me dire comment je pourrais étendre cela pour être en mesure d'envoyer le nom d'utilisateur et mot de passe ainsiFormulaire d'envoi dans libcurl

Répondre

1

Utilisez curl_formadd pour ajouter plus de champs aux données POST.

Si vous vouliez ajouter du code à cet exemple, vous le feriez dans la section où le formulaire est en cours d'installation, juste au-dessus du commentaire: /* Fill in the submit field too, even if this is rarely needed */.

Le code que vous ajouteriez serait quelque chose comme ceci:

curl_formadd(&formpost, 
      &lastptr, 
      CURLFORM_COPYNAME, "user", //the name of the data to send 
      CURLFORM_COPYCONTENTS, "username", //the users username 
      CURLFORM_END); 

curl_formadd(&formpost, 
      &lastptr, 
      CURLFORM_COPYNAME, "pass", //the name of the data to send 
      CURLFORM_COPYCONTENTS, "mypass", //the users password 
      CURLFORM_END); 

Le ressemblerait à quelque chose comme formulaire HTML pour soumettre les mêmes données (En supposant que l'utilisateur a tapé dans les mots de passe corrects) ceci:

Username: <input type="text" name="user" /> <br /> 
Password: <input type="password" name="pass" /> 
+0

pouvez-vous me dire comment le formulaire d'envoi ressemblerait en html ?? J'essayais de tester cela en utilisant wireshark mais je ne pouvais pas voir le code HTML lui-même. – sfactor

+0

@sfactor Terminé. Le code HTML n'est pas envoyé dans une requête POST, les valeurs saisies dans le formulaire sont converties en une clé/valeur comme '? User = nom d'utilisateur & pass = mypass' – Yacoby

+0

comment saurais-je si la soumission est réussie dans ce cas de ma part ? – sfactor

0

Par exemple, regardez 'res = curl_easy_perform (curl);' part dans postit2.c ... Vous pouvez ajouter 'printf ("CurlCode:% d", res);'. Si le résultat est 0, cela signifie que la soumission est réussie.