2016-07-07 3 views
0

Ich weiß, dass diese Frage möglicherweise mehrmals gestellt wurde, aber keine der Lösungen scheint für mich zu arbeiten. In meiner Andy-Volley-Post-Anfrage gebe ich Benutzernamen und Passwort ein, aber jedes Mal, wenn ich auf login klicke, sage ich immer "ungültiger Benutzername und Passwort", obwohl die Zugangsdaten korrekt sind und es gut mit dem Postboten klappt. Hier ist mein Code unten:Android-Volley Beitrag Fehler beim Arbeiten mit Node.js

Anmeldung Node.js

router.post('/login', function(req,res,next){ 
    var user = { 
    username: req.body.username, 
    password: req.body.password 
    }; 

    connection.query("SELECT id, fullname, username, email_address, createdAt FROM users WHERE username=? OR email_address=? AND password=? LIMIT 1",[user.username, user.username, user.password], function(err, rows, field){ 
     if(err) throw err; 
     if(rows.length > 0){ 
     res.json({ 
      success: '1', 
      message: 'Login Successful', 
      id: rows[0], 
      fullname: rows[1], 
      username: rows[2], 
      email: rows[3], 
      createdAt: rows[4] 
     }); 
     }else{ 
     res.json({ 
      success: '0', 
      message: 'Invalid username or password' 
     }); 
     } 
    }); 
}); 

Anmeldung auf Client-Seite (Android):

private void login(final String uname, final String upass) { 
    //192.168.1.101:5000/api/users/1 
    final String url = "http://192.168.1.100:5000/api/users/login"; 
    RequestQueue queue = Volley.newRequestQueue(getActivity()); 

    JsonObjectRequest rq = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      try { 
       if(response.getString("success") != null) { 
       final int success = Integer.parseInt(response.getString("success")); 
        if (success == 1) { 
         JSONObject uid = response.getJSONObject("id"); 
         int id = uid.getInt("id"); 
         String fullname = uid.getString("fullname"); 
         String username = uid.getString("username"); 
         String email = uid.getString("email"); 
         String createdAt = uid.getString("createdAt"); 
         SuperToast successToast = new SuperToast(getActivity(), Style.getStyle(Style.BLUE, SuperToast.Animations.FLYIN)); 
         //successToast.setText(id + " " + fullname + " " + username + " " + email + " " + createdAt); 
         successToast.setText(response.getString("message")); 
         successToast.setDuration(SuperToast.Duration.LONG); 
         successToast.setGravity(Gravity.CENTER, 0, 0); 
         successToast.show(); 
        } else if (success == 0) { 
         SuperToast errorToast = new SuperToast(getActivity(), Style.getStyle(Style.BLUE, SuperToast.Animations.FLYIN)); 
         errorToast.setText(response.getString("message")); 
         errorToast.setDuration(SuperToast.Duration.MEDIUM); 
         errorToast.setGravity(Gravity.CENTER, 0, 0); 
         errorToast.show(); 
        } else { 
         SuperToast errorToast = new SuperToast(getActivity(), Style.getStyle(Style.BLUE, SuperToast.Animations.FLYIN)); 
         errorToast.setText("Invalid Request"); 
         errorToast.setDuration(SuperToast.Duration.MEDIUM); 
         errorToast.setGravity(Gravity.CENTER, 0, 0); 
         errorToast.show(); 
        } 
       } 
      } catch (JSONException ex) { 
       ex.printStackTrace(); 
      } 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      SuperToast.create(getActivity(), error.getMessage(), SuperToast.Duration.LONG).show(); 
     } 
    }) { 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      HashMap<String, String> headers = new HashMap<String, String>(); 
      headers.put("Content-Type", "application/json; charset=utf-8"); 
      return headers; 
     } 

     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("username", uname); 
      params.put("password", upass); 
      return params; 
     } 
    }; 
    //MySingleton.getInctance(getActivity().getApplicationContext()).addToRequestQueue(rq); 
    queue.add(rq); 
} 

Jede Hilfe wird sehr geschätzt, danke im Voraus.

Antwort

0

ich es behoben haben, stellt sich heraus, es war die E-Mail-Antwort, die null und Ausnahmen war und dank Tiago Ribeiro funktioniert der Code endlich. Hier ist der aktualisierte Code

Login.js:

router.post('/login', function(req,res,next){ 
    function encrypt(text){ 
     var cipher = crypto.createHash('sha1') 
      .update(text) 
      .digest('hex'); 
     return cipher; 
    } 
    var uPassword = encrypt(req.body.password.toString()); 
    var user = { 
    username: req.body.username, 
    password: uPassword 
    }; 

    connection.query("SELECT id, fullname, username, email_address, createdAt FROM users WHERE (username=? OR email_address=?) AND password=? LIMIT 1",[user.username, user.username, user.password], function(err, rows, field){ 
     if(err) throw err; 
     if(rows.length > 0){ 
     res.json({ 
      success: 1, 
      message: 'Login Successful', 
      id: rows[0], 
      fullname: rows[1], 
      username: rows[2], 
      email_address: rows[3], 
      createdAt: rows[4] 
     }); 
     }else{ 
     res.json({ 
      success: 0, 
      message: 'Invalid username or password' 
     }); 
     } 
    }); 
}); 

Android Anmeldung:

private void login(final String uname, final String upass) { 
     //192.168.1.101:5000/api/users/1 
     final String url = "http://192.168.1.100:5000/api/users/login"; 
     RequestQueue queue = Volley.newRequestQueue(getActivity()); 
     JSONObject params = new JSONObject(); 
     try { 
      params.put("username", uname); 
      params.put("password", upass); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     JsonObjectRequest rq = new JsonObjectRequest(Request.Method.POST, url, params, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        final int success = response.getInt("success"); 
         Log.d("Response", String.valueOf(success)); 
         if (success == 1) { 
          JSONObject uid = response.getJSONObject("id"); 
          int id = uid.getInt("id"); 
          String fullname = uid.getString("fullname"); 
          String username = uid.getString("username"); 
          String email = uid.getString("email_address"); 
          String createdAt = uid.getString("createdAt"); 
          SuperToast successToast = new SuperToast(getActivity(), Style.getStyle(Style.BLUE, SuperToast.Animations.FLYIN)); 
          successToast.setText(id + " " + fullname + " " + username + " " + email + " " + createdAt); 
          // successToast.setText(response.getString("message")); 
          successToast.setDuration(SuperToast.Duration.LONG); 
          successToast.setGravity(Gravity.CENTER, 0, 0); 
          successToast.show(); 
         } else if (success == 0) { 
          SuperToast errorToast = new SuperToast(getActivity(), Style.getStyle(Style.BLUE, SuperToast.Animations.FLYIN)); 
          errorToast.setText(response.getString("message")); 
          errorToast.setDuration(SuperToast.Duration.MEDIUM); 
          errorToast.setGravity(Gravity.CENTER, 0, 0); 
          errorToast.show(); 
          Log.d("Response", response.toString()); 
         } else { 
          SuperToast errorToast = new SuperToast(getActivity(), Style.getStyle(Style.BLUE, SuperToast.Animations.FLYIN)); 
          errorToast.setText("Invalid Request"); 
          errorToast.setDuration(SuperToast.Duration.MEDIUM); 
          errorToast.setGravity(Gravity.CENTER, 0, 0); 
          errorToast.show(); 
         } 
       } catch (JSONException ex) { 
        ex.printStackTrace(); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       SuperToast.create(getActivity(), error.getMessage(), SuperToast.Duration.LONG).show(); 
      } 
     }) { 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       HashMap<String, String> headers = new HashMap<String, String>(); 
       headers.put("Content-Type", "application/json; charset=utf-8"); 
       return headers; 
      } 
/* 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("username", uname); 
       params.put("password", upass); 
       return params; 
      }*/ 
     }; 
     //MySingleton.getInctance(getActivity().getApplicationContext()).addToRequestQueue(rq); 
     queue.add(rq); 
    } 
2

Sie sind nicht den Benutzernamen und das Passwort auf dem Anforderungstext zu senden:

JsonObjectRequest rq = new JsonObjectRequest(Request.Method.POST, url, null, new Response.Listener<JSONObject>() { 

den Körper anlegen und setzen auf die Anfrage:

JSONObject body = new JSONObject(); 
body.put("username", uname); 
body.put("password", upass); 

JsonObjectRequest rq = new JsonObjectRequest(Request.Method.POST, url, body, new Response.Listener<JSONObject>() { 
+0

Versuchte, dass es nicht – codex

+0

funktionierte Was ist die Antwort? –

+0

Es gibt keine Antwort – codex