Envoyer des données POST dans Android
Je suis expérimenté en PHP, JavaScript et d'autres langages de script, mais je n'ai pas beaucoup d'expérience avec Java ou Android.
Je suis à la recherche d'un moyen d'envoyer des POST des données à un script PHP et afficher le résultat.
Vous devez vous connecter pour publier un commentaire.
* Mise à jour des Réponse qui fonctionne sur Android 6.0+. Grâce à @Rohit Suthar, @Tamis Bolvari et @sudhiskr pour les commentaires. *
Références:
Âgées Réponse
Remarque: Cette solution est obsolète. Il ne fonctionne que sur les appareils Android jusqu'à 5.1. Android 6.0 et au-dessus n'incluent pas le client http Apache utilisé dans cette réponse.
Client Http d'Apache Commons est le chemin à parcourir. Il est déjà inclus dans android. Voici un exemple simple de comment faire HTTP Post à l'aide.
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
pourUTF-8
enconding.yourAsyncTaskObject.execute(params)
HttpClient
", "HttpPost
", "HttpResponse
", "HttpEntity
", "EntityUtils
", "NameValuePair
", "BasicNameValuePair
" sont Déconseillés. S'il vous plaît suggérer une autre solution.DefaultHttpClient
est obsolète.CallAPI
classe?NOT
montrer unPOST
exemple. Il serait bon de modifier le6.0
réponse. C'est moteur de recherche optimisé pour montrer que le premier résultat, qui est une sorte de publicité mensongère.pour Android = > 5
La org.apache.http classes et les AndroidHttpClient classe ont été obsolète dans Android 5.1. Ces classes ne sont plus maintenues, et vous devez migrer tout le code de l'application en utilisant ces Api pour la URLConnection classes dès que possible.
https://developer.android.com/about/versions/android-5.1.html#http
Pensé à partager mon code à l'aide de HttpUrlConnection
...
vous pouvez également Post méthode :
Mise à jour 21/02/2016
pour post demande avec json , voir cet exemple :
Mise à JOUR 24/08/2016
Utiliser certaines des meilleures de la bibliothèque , tels que :
parce que :
Sur le bas de l'API niveaux (surtout sur pain d'épices et de Froyo), HttpUrlConnection et HttpClient sont loin d'être parfaites
Depuis l'introduction de Nid d'abeilles de l'API (11), il est obligatoire d'effectuer les opérations de réseau sur un thread séparé, différent du thread principal
performPostCall()
getPostData()
devrait remplacer avecgetPostDataString()
Par ce moyen, nous pouvons envoyer des données avec la méthode http post et obtenez le résultat
Ceci est un exemple de la façon de POSTER multi-partie de données SANS l'aide externe Apache bibliothèques:
à @primpop réponse que je voudrais ajouter, comment faire pour convertir la réponse dans une Chaîne de caractères:
Voici un exemple de convertStramToString.
HttpClient
", "HttpPost
", "HttpResponse
", "HttpEntity
", "EntityUtils
", "NameValuePair
", "BasicNameValuePair
" sont Déconseillés. S'il vous plaît suggérer une autre solution.Mieux l'utilisation d'Apache Commons HttpClient, qui est également inclus dans android déjà.
Jetez un oeil à
Développeur Android: HTTP Apache Client Package Résumé
pour général de l'api info.
Vous pouvez utiliser cette fonction pour envoyer une requête HTTP POST à l'URL. Vous pouvez facilement envoyer demander et obtenir une réponse. Je l'utilise toujours . J'ai beau travail pour moi.
Vous devez Également Ajouter soufflet fichier Jar dans libs folde
Enfin modifier votre build.gradle
Dans la dernière Reconstruire votre projet.
Vous pouvez utiliser
URLConnection
avecsetDoOutput
(true)
,getOutputStream()
(pour l'envoi de données), etgetInputStream()
(pour la réception). Soleil a un exemple pour exactement ce.Pour moi fonctionne suivant :
Si vous voulez juste pour ajouter des données à l'Url que Vous pouvez le faire en utilisant HttpUrlConnection depuis HttpClient est maintenant obsolète.
Une meilleure approche serait d'utiliser une bibliothèque comme-
Volley
Rénovation
Nous pouvons publier des données sur le script php et extraire les résultats et de les afficher en utilisant ce code exécuté Par classe AsyncTask.
Mais à l'aide de bibliothèques telles que le volley ou la rénovation est bien meilleure option parce que la classe Asynctask et HttpurlConnection est plus lent par rapport aux bibliothèques. Aussi la bibliothèque va chercher tout et il est plus rapide ainsi.
J'ai trouvé cette exemple utile avec cette tutoriel vidéo.
Vous pouvez POSTER un HttpRequest à l'aide du Serveur web de classe et le suivi de la réponse dans son port d'écoute de l'interface.
Maintenant créer un DataRack pour lier vos données
Maintenant, il suffit d'envoyer la requête POST avec ce rack
Vous devez inclure dans ma bibliothèque pour cela. Documentations ici
Utiliser l'open source
okHttp
de la bibliothèque de la Place.okHttp
fonctionne à partir d'Android 2.3 et plus et a un Licence Apache 2.0 sur GitHub.Envoyer des données POST est aussi simple que d'ajouter les options suivantes dans une AsyncTask:
okHttp
dispose également d'un espace de noms sur maven, afin de l'ajouter à votre Android Studio de projet est simple. Juste ajoutercompile 'com.squareup.okhttp3:okhttp:3.11.0'
à votre application construire.gradle.Code Complet
Ajouter les éléments suivants à votre activité:
Et de l'appeler à l'aide:
Méthode pour publier des données comme de la requête HTTP,
HttpClient
", "HttpPost
", "HttpResponse
", "HttpEntity
", "EntityUtils
", "NameValuePair
", "BasicNameValuePair
" sont Déconseillés. S'il vous plaît suggérer une autre solution.Dans les versions plus récentes d'Android, vous devez mettre toutes les demandes d'e/S dans un nouveau thread. AsyncTask qui fonctionne le mieux pour les petites demandes.