J'essaie d'envoyer un fichier et d'autres variables POST à un script PHP sur mon serveur. Il n'y a pas de bonnes ressources sur Google et les exemples de code que j'ai trouvés ne fonctionnent pas. De préférence sans utiliser cURL.Téléchargement de fichiers via un HTTP POST en C++
Répondre
Je dirais rouler les vôtres. Ce n'est pas trop compliqué.
capture un post HTTP envoyé à partir d'un navigateur Wireshark et désosser au besoin en utilisant la spec comme guide. (Voir de Andreas Magnusson réponse ci-dessous pour des spécifications peut-être plus pertinentes.)
Je recommanderais cette approche personnellement pour apprendre le protocole plutôt que d'aller pure spec. C'est assez difficile d'apprendre des choses juste de la spécification. Je préfère explorer les différents comportements par des clients http connus et essayer de comprendre comment les choses fonctionnent en utilisant la spécification comme guide.
Formatez et envoyez les données en conséquence sur une socket une fois que vous êtes à l'aise avec HTTP.
En outre, si vous n'êtes pas familier avec la programmation de socket, consultez Beej's guide to socket programming.
Wireshark ?? Sérieusement, lire la spécification et coder de cela devrait toujours être votre solution initiale, si le but est de rouler le vôtre. Ensuite, quand vous avez terminé et que la chose ne fonctionne toujours pas, et vous n'avez aucune idée pourquoi, il est temps de comparer votre sortie à celle d'un navigateur par Wireshark. Le réglage d'une capture Wireshark est l'équivalence HTTP de la programmation Cargo-Cult. –
Ok, remplacez "tweak" par "reverse engineering pour en savoir plus sur le protocole". C'est assez difficile à apprendre à partir de spécifications, vous avez besoin de quelque chose à jouer avec. –
Tout d'abord vous avez besoin de la spécification correcte (voir ma réponse) et ensuite vos tentatives initiales doivent toujours être conformes à la spécification, si cela ne fonctionne pas, diff: ing avec une capture Wireshark à partir d'une application qui fonctionne est toujours utile . –
Juste quelques ressources rendent assez facile de rouler votre propre
Voici an example of a GET request via ASIO (la bibliothèque réseau C++ Boost)
est ici the HTTP protocol made really easy
La requête GET comment vous pouvez voir n'importe quelle page sur votre site. Avec ce code, vous pouvez télécharger n'importe quelle page et l'obtenir en tant que texte brut. Comme vous pouvez le voir, il envoie un en-tête GET au serveur. Comme expliqué dans that HTTP protocol page, l'POST request ressemble à ceci
POST /path/script.cgi HTTP/1.0 From:
[email protected] User-Agent:
HTTPTool/1.0 Content-Type:
application/x-www-form-urlencoded
Content-Length: 32
home=Cosby&favorite+flavor=flies
- Pour envoyer un fichier:
- Vous mettez votre URL après le changement après
- le type de contenu au type de fichier que vous essayez de télécharger .
- Set Content-Length au nombre d'octets dans ce fichier
- Annexer le fichier après un retour de carrage (remplacer "home = Cosby & favori + saveur = mouches")
Une autre (plus Quick- n-dirty) est d'utiliser un utilitaire, via un appel system() ou similaire. Par exemple, l'utilitaire wget dispose d'une option --post-fichier.
Si vous voulez rouler le vôtre, vous aurez besoin du RFC for HTTP file uploading correspondant (googling sur "rfc http file upload" donnera le même résultat). Ce RFC montre également comment gérer une combinaison de fichiers et d'autres données FORM (ou variables POST). Le problème est bien sûr que vous aurez probablement envie de lire le MIME RFC ainsi ...
+1 pour trouver la spécification la plus pertinente. –
cela fonctionnait très bien pour moi sur debian (http get, http post):
J'utilise v 0.9.3 qui nécessite un boost 1.49
- 1. HTTP POST Bien que C#
- 2. En-têtes http Post
- 3. Téléchargement de contenu compressé via HTTP à l'aide de Python
- 4. Alternative à Response.TransmitFile pour le transfert de fichiers via HTTP
- 5. Le téléchargement de fichiers via WCF est plus lent que via IIS
- 6. Tunneling HTTP PUT via POST dans ADO.NET Data Services
- 7. Code canonique HTTP POST?
- 8. Sharepoint - Document envoyer plusieurs fichiers - HTTP « post » verbe pas permis
- 9. http POST avec asp.net
- 10. Configuration Http Post Server
- 11. Téléchargement de fichiers
- 12. Handle http post request
- 13. Téléchargement/Téléchargement de plusieurs fichiers Simultanément en utilisant FTPWebrequest Classe
- 14. python: parse Requête HTTP POST avec téléchargement de fichier et paramètres supplémentaires
- 15. PHP - HTTP Post - en-têtes incorrects
- 16. Comment obtenir un rapport d'état de tous les fichiers en cours de téléchargement via un formulaire HTTP sur un serveur Apache?
- 17. Ruby Remote HTTP Post
- 18. ASP.NET MVC - HTTP Post
- 19. Post http avec flash?
- 20. Téléchargement de fantaisie sans navigateur de fichiers
- 21. affichage à l'aide POST de C# via https
- 22. en utilisant JSON-Framework pour préparer un objet json à publier via HTTP Request Objective-C
- 23. système de téléchargement de fichiers
- 24. HTTP POST - Je suis coincé
- 25. Ajax en utilisant le téléchargement de fichiers
- 26. téléchargement de fichiers multiples
- 27. Réponse d'image via POST
- 28. Téléchargement de CSV via AJAX
- 29. C# Xml dans Http Post Request Corps du message
- 30. Authentification Django depuis .NET en utilisant HttpWebRequest et HttpWebResponse via HTTP POST
Pour quelle plate-forme codez-vous? –