Envoyer envoyer des données au serveur à l'aide de Volley android
Je suis en train d'envoyer des données au serveur en utilisant le Volley bibliothèque.
private void registerUser(final String email, final String username,
final String password) {
//Tag used to cancel the request
String tag_string_req = "req_register";
pDialog.setMessage("Registering ...");
StringRequest strReq = new StringRequest(Method.POST,
AppConfig.URL_REGISTER, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Register Response: " + response.toString());
try {
JSONObject jObj = new JSONObject(response);
// String status = jObj.getString("status");
//User successfully stored in MySQL
//Now store the user in sqlite
String name = jObj.getString("username");
String email = jObj.getString("email");
String password = jObj.getString("password");
//String created_at = user
//.getString("created_at");
//Inserting row in users table
//db.addUser(name, email);
//Launch login activity
Intent intent = new Intent(
RegisterActivity.this,
LoginActivity.class);
startActivity(intent);
finish();
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Registration Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() {
//Posting params to register url
Map<String, String> params = new HashMap<String, String>();
params.put("email", email);
params.put("username", username);
params.put("password", password);
return params;
}
Malheureusement pas de json est envoyé et je ne reçois rien en retour. Voici un échantillon de mon logcat de sortie. Après l'envoi d'une demande avec succès sur le serveur, je veux obtenir de réponse avec succès/échec.
Register Response: ---- YOUR DATA ----
username=xxx&email=xxx%40gmail.com&password=xxxx&-------------------
05-05 14:56:55.002 2558-2558/app.victory.walking.thewalkingviktory
W/System.err﹕ org.json.JSONException: Value ---- of type java.lang.String
cannot be converted to JSONObject
05-05 14:56:55.002 2558-2558/app.victory.walking.thewalkingviktory
W/System.err﹕ at org.json.JSON.typeMismatch(JSON.java:111)
05-05 14:56:55.002 2558-2558/app.victory.walking.thewalkingviktory
W/System.err﹕ at org.json.JSONObject.<init>(JSONObject.java:160)
05-05 14:56:55.002 2558-2558/app.victory.walking.thewalkingviktory
W/System.err﹕ at org.json.JSONObject.<init>(JSONObject.java:173)
Toute aide, s'il vous plaît? Merci.
Le format dans lequel vous souhaitez envoyer les paramètres de je.e JSON ou Chaîne
OriginalL'auteur Theo | 2015-05-05
Vous devez vous connecter pour publier un commentaire.
Utilisation de Volley comme ça,... C'est de travailler pour moi.
que faire si je veux envoyer un paramètre de chaîne et un int?
final HashMap<Object, Object> postParams = new HashMap<Object, StriObjectng>(); ... Utiliser ce... elle fonctionne pour toutes les combinaisons
n'est pas besoin de définir le type de corps ? @Override public String getBodyContentType() { return "application/json; charset=utf-8"; }
OriginalL'auteur Ankit Kumar
Tout d'abord, vous n'êtes pas d'envoi json de votre serveur. Vous envoyez paramétrées url avec la méthode post et prise en json texte en guise de réponse.
Je pense que le problème est la réponse du serveur qui est censé être json. Mais à partir de votre journal, ce texte
"---- YOUR DATA ----"
qui vous obtenez à partir deLog.d(TAG, "Register Response: " + response.toString());
n'est pas du tout au format json . Si vous avez besoin de modifier votre serveur de répondre dans le bon format json.Ok. C'est ma logique. Je sérialiser les objets java(e-mail, etc) à des chaînes json.Ces chaînes doivent être introduites dans le serveur,et d'obtenir la réponse correspondante droit d'enregistrement de réussite et de droite?
Pas de. Votre demande de serveur n'a rien à voir avec json. Il a simplement des cartes de paramètres et de leurs valeurs dans des paires clé-valeur. Si vous regardez votre journal, cette ligne
username=xxx&email=xxx%40gmail.com&password=xxxx
montre comment faire votre demande ressemble. Vous pouvez cependant régler le serveur pour envoyer json comme réponse Volley peut traiter avec ses méthodes.Donc, vous êtes en suggérant que c'est un problème de serveur. Je suis en train de dire ce que je n'ai pas de serveur de codage,mais un autre gars au travail.
Je peux dire que la réponse n'est pas au format json. Je ne sais pas si la demande est traitée avec succès par le serveur ou que la réponse que vous obtenez correspond à la réussite ou à l'échec.
OriginalL'auteur inmyth
C'est la solution. J'ai dû utiliser la JsonObjectRequest classe, et non pas le StringRequest. Ce JsonRequest n'est qu'il convertit votre table de hachage des paires clé-valeur dans un Format JSON.
OriginalL'auteur Theo
JSon post
OriginalL'auteur Raseem Ayatt
[["profond","[email protected]","8888999999"]]
OriginalL'auteur Sanjeev Pal