Android - POST de Service Web RESTful
Je suis à la recherche de quelques conseils sur la façon de publier des données à un service web dans mon application Android. Malheureusement, c'est un projet d'école, donc je ne suis pas en mesure d'utiliser des bibliothèques externes.
Le service web a une URL de base, par exemple:
http://example.com/service/create
Et prend deux variables, dans le format suivant:
username = "user1"
locationname = "location1"
Le service web RESTful et utilise une structure XML, si cela fait une différence. De ma recherche, je comprends que je devrais être à l'aide de URLconnection plutôt que de le obsolète HTTPconnection, mais je ne peux pas trouver un exemple de ce que je suis à la recherche d'.
Voici ma tentative, qui n'est actuellement pas de travail:
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toPost test = new toPost();
text.execute();
}
private class toPost extends AsyncTask<URL, Void, String> {
@Override
protected String doInBackground(URL... params) {
HttpURLConnection conn = null;
try {
URL url = new URL("http://example.com/service");
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
String body = "username=user1&locationname=location1";
OutputStream output = new BufferedOutputStream(conn.getOutputStream());
output.write(body.getBytes());
output.flush();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
conn.disconnect();
}
return null;
}
}
}
Avez-vous essayé de regarder en Rénovation au lieu de rouler vos propres HttpUrlConnection?
Malheureusement, c'est un projet d'école, donc je ne suis pas en mesure d'utiliser des bibliothèques externes
OriginalL'auteur user3371750 | 2015-11-16
Vous devez vous connecter pour publier un commentaire.
Je voudrais utiliser le volley bibliothèque, comme suggéré par google
De faire une demande est expliqué sur cette page, mais est aussi simple que:
pourquoi pas? vous pouvez simplement importer directement à partir de google et de l'expédier avec votre apk, je ne vois pas en quoi la question?
OriginalL'auteur Nanne
Si vous souhaitez utiliser HttpUrlConnection, vous pouvez vous reporter à la deux échantillons. Espérons que cette aide!
OriginalL'auteur BNK
Oui, vous devez utiliser URLConnection pour faire des requêtes.
Vous pouvez envoyer des données xml dans la charge utile.
Veuillez vous référer Android à l'Aide de HttpURLConnection pour publier des données XML
Vous devez appeler test.execute(); de sorte que AsyncTask pouvez exécuter votre demande. Aussi n'oubliez pas d'ajouter des autorisations pour l'accès à internet dans le fichier manifest <uses-permission android:name="android.la permission.INTERNET" />
J'ai les autorisations correctes dans le manifeste et a ajouté l'exécution, mais sa ne fonctionne toujours pas
OriginalL'auteur Jayesh
Ma suggestion est d'utiliser Rénovation parmi avec Jackson convertisseur.
Rénovation prend en charge les deux asynchrone et synchrone des demandes. Il prend en charge
GET
,POST
,PUT
,DELETE
, etHEAD
méthodes.Jackson va vous aider à analyser le XML pour objet JSON.
Ces deux sont très faciles à utiliser et ont une bonne documentation.
Ici vous pouvez trouver de tutoriel pour l'utilisation de Rénovation.
OriginalL'auteur Damian Kozlak
Utilisez code ci-dessous à l'appel de services web rest à partir de votre application android. c'est entièrement testé le code.
OriginalL'auteur Amol Suryawanshi
Vous aurait à se le demander. Cela peut être fait en appelant getResponseCode(), ou getResponseMessage()) ou getInputStream() pour que la réponse soit retourné et traitées.
Code de travail pour votre exemple:
OriginalL'auteur Nitro
de l'essayer. (msg est la chaîne xml )
OriginalL'auteur shreyas