2015-09-15 1 views
3

Je suis nouveau à android et volley. J'ai créé un programme de connexion pour récupérer json données de mon serveur, mais il ne fonctionne pas. Il n'apparaît pas la réponse json après avoir cliqué sur le bouton de connexion . Je colle mon code ci-dessous.Android: demande de Volley ne fonctionne pas

MainActivity.java

package com.volley.cuser.volleyexample; 

import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 

import com.android.volley.NetworkResponse; 
import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.Volley; 

public class MainActivity extends Activity { 

    private TextView txtDisplay; 
    EditText editText; 
    EditText editText2; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     editText = (EditText) findViewById(R.id.username); 
     editText2 = (EditText) findViewById(R.id.password); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    public void studentLogin(View view) { 
     String username = editText.getText().toString(); 
     String password = editText2.getText().toString(); 
     RequestQueue queue = Volley.newRequestQueue(MainActivity.this); 
     String url = "http://afterklass.in/api/"; 
     JSONObject js = new JSONObject(); 
     try { 
      JSONObject jsonobject = new JSONObject(); 

      jsonobject.put("email_mobile", username); 
      jsonobject.put("passwd", password); 
      jsonobject.put("m", "student"); 
      jsonobject.put("uc", "signin"); 
      jsonobject.put("signin", "Sign+In"); 

      js.put("data", jsonobject.toString()); 

     }catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST, url, js, new Response.Listener<JSONObject>() { 

      @Override 
      public void onResponse(JSONObject response) { 
       // TODO Auto-generated method stub 
       txtDisplay.setText("Response => " + response.toString()); 
      } 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       //String json = null; 

       //NetworkResponse response = error.networkResponse; 
       //if(response != null && response.data != null){ 
        //switch(response.statusCode){ 
         //case 400: 
          //txtDisplay.setText("Error => " + response.data); 
          //break; 
        //} 
        //txtDisplay.setText("Error => " + response.statusCode); 
        //Additional cases 
       //} 
       Log.d("ERROR", error.toString()); 
      } 
     }); 

     queue.add(jsObjRequest); 
    } 

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <EditText android:id="@+id/username" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/username" /> 
    <EditText android:id="@+id/password" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:hint="@string/password" /> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/login" 
     android:onClick="studentLogin" /> 

</LinearLayout> 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.volley.cuser.volleyexample" > 

    <uses-permission android:name="android.permission.INTERNET"/>' 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 
+0

Quel est le message d'erreur ??? – Pankaj

+0

Je ne reçois aucun message d'erreur – Shivam

+0

@Shivam: 'Il ne redirige pas vers l'autre page' où est le code pour démarrer une nouvelle activité? –

Répondre

3

S'il vous plaît changer votre jsonRequest à StringRequest et ajoutez-tête personnalisé lui:

Edited : private static final String TAG = YourActivity.class.getSimpleName(); 
     StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
         new Response.Listener<String>() { 
          @Override 
          public void onResponse(String response) { 
           // Display the first 500 characters of the response string. 
           Log.e(TAG, "Successfully signed in : " + response.toString()); 
          } 
         }, new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         Log.e(TAG, "Error at sign in : " + error.getMessage()); 
        } 
       }) { 
        @Override 
        public HashMap<String, String> getParams() { 
         HashMap<String, String> params = new HashMap<String, String>(); 
         params.put("email_mobile", username); 
         params.put("passwd", password); 
         params.put("m", "student"); 
         params.put("uc", "signin"); 
         params.put("signin", "Sign+In"); 
         return params; 
        } 
     }; 

Merci.

+1

Bonjour Mamta, quel est ce TAG dans ce code? – Shivam

+0

@Shivam: S'il vous plaît vérifier la réponse éditée ci-dessus. !! – AndiGeeky

+0

Merci pour l'aide Mamata, mon programme fonctionne maintenant. J'espère que je peux obtenir plus d'aide de votre part. :) – Shivam

2

au lieu de la ligne ci-dessous:

RequestQueue queue = Volley.newRequestQueue(this); 

changement à comme ceci:

RequestQueue queue = Volley.newRequestQueue(MainActivity.this); 

Et vous déclarez EditText dans la méthode onCreate comme comme suit:

EditText editText; 
EditText editText2; 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     editText = (EditText) findViewById(R.id.username); 
     editText2 = (EditText) findViewById(R.id.password); 
    } 
+0

Cela ne fonctionne pas non plus. – Shivam

+0

Archivez votre méthode ** public void onErrorResponse (VolleyError error) ** si vous obtenez un ** Erreur ** ou non. – Pankaj

+0

public void onErrorResponse (erreur VolleyError) { Chaîne json = null; Réponse NetworkResponse = error.networkResponse; if (réponse! = Null && response.data! = Null) { commutateur (response.statusCode) { case 400: txtDisplay.setText ("Erreur =>" + réponse.data); pause; } txtDisplay.setText ("Erreur =>" + response.statusCode); // Cas supplémentaires } } – Shivam

3

Lorsque vous envoyez des données JSON, définir le type conent comme ça ... espère que cela peut aider

@Override 
    public Map<String, String> getHeaders() 
    throws AuthFailureError { 
     Map<String, String> params = new HashMap<String, 
       String>(); 
     params.put("Content-Type", "application/json"); 
     return params; 
    } 
+0

J'utilise déjà comme ça seulement. – Shivam

+0

avez-vous vérifié cela jusqu'à quel point l'exécution va? –

+0

Non, je ne sais pas comment vérifier. Je suis nouveau à ce sujet. aidez s'il vous plaît. – Shivam

0

ajoutez ce qui suit à votre fichier build.gradle

compile 'com.mcxiaoke.volley:library:1.0.19'

1

En ligne manifeste Android:

<uses-permission android:name="android.permission.INTERNET"/>' 

supprimer cette 'à l'extrémité de la ligne