2016-05-24 2 views
1

Я пытаюсь использовать Volley для реализации функции входа в мое приложение. Я подключаюсь к localhost и выполняю скрипт для получения данных из базы данных. Используя журналы, я вижу, что выполнение никогда не входит в часть onResponse объекта Response.Listener.Android - Использование volley и не получение ответа

Вот код:

Response.Listener<String> responseListener = new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        try { 
         Log.d(TAG, "onResponse()"); 
         JSONObject jsonResponse = new JSONObject(response); 
         boolean success = jsonResponse.getBoolean("success"); 
         boolean email_found = jsonResponse.getBoolean("email_found"); 

         if (success) { 
          Fragment fragment = getFragmentManager().findFragmentByTag(MainActivity.OPTIONS_TAG); 
          if (fragment == null) { 
           fragment = new LoginFragment(); 
          } 
          getFragmentManager().beginTransaction().replace(R.id.container, fragment, MainActivity.OPTIONS_TAG).commit(); 
          Toast.makeText(getContext(), "Successfull login", Toast.LENGTH_SHORT); 
         } else if (email_found){ 
          mPasswordView.setError(getString(R.string.error_incorrect_password)); 
          mPasswordView.requestFocus(); 
         } else { 
          mEmailView.setError(getString(R.string.error_invalid_email)); 
          mEmailView.requestFocus(); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }; 


      Log.d(TAG, "LoginRequest"); 
      LoginRequest loginRequest = new LoginRequest(email,password, responseListener); 

LoginRequest класс:

class LoginRequest extends StringRequest { 
    private static final String LOGIN_REQUEST_URL = "http://localhost/myportal/login.php"; 
    private Map <String, String> params; 

    public LoginRequest (String email, String password, Response.Listener<String> listener) { 
     super(Request.Method.POST, LOGIN_REQUEST_URL, listener, null); 
     params = new HashMap<>(); 
     params.put("email", email); 
     params.put("password", password); 
    } 

    public Map<String, String> getParams() { 
     return params; 

    } 
} 

И PHP скрипт:

<?php 
    $con = mysqli_connect("localhost", "root", "" , "myportal"); 

    $email = $_POST["email"]; 
    $password = $_POST["password"]; 
    $response = array(); 
    $response["email_found"]=false; 

    $statement = mysqli_prepare($con, "SELECT * FROM user WHERE email = ?"); 
    mysqli_stmt_bind_param($statement, "s", $email); 
    mysqli_stmt_execute($statement); 

    mysqli_stmt_store_result($statement); 
    if (mysqli_stmt_fetch($statement)){ 
     $response["email_found"]=true; 
    } 

    $statement = mysqli_prepare($con, "SELECT * FROM user WHERE email = ? AND password = ?"); 
    mysqli_stmt_bind_param($statement, "ss", $email, $password); 
    mysqli_stmt_execute($statement); 

    mysqli_stmt_store_result($statement); 
    mysqli_stmt_bind_result($statement, $userID, $name, $lastname, $email, $password, $year); 

    $response["success"] = false; 

    while (mysqli_stmt_fetch($statement)) { 
     $response["success"] = true; 
     $response["name"] = $name; 
     $response["lastname"] = $lastname; 
     $response["email"] = $email; 
     $response["password"] = $password; 
     $response["year"] = $year; 
    } 

    echo json_encode($response); 
?> 

выход Logcat:

05-24 21:29:05.812 2114-2496/com.google.android.gms E/Volley: [133] BasicNetwork.performRequest: Unexpected response code 307 for https://android.googleapis.com/nova/herrevad/network_quality_info 
05-24 21:29:05.812 2114-17798/com.google.android.gms W/RmtRprtRfrshSvc: [19078] RemoteReportsRefreshService.a: java.util.concurrent.ExecutionException: com.android.volley.ServerError 
                     java.util.concurrent.ExecutionException: com.android.volley.ServerError 
                      at com.android.volley.toolbox.RequestFuture.doGet(SourceFile:117) 
                      at com.android.volley.toolbox.RequestFuture.get(SourceFile:88) 
                      at com.google.android.gms.herrevad.services.RemoteReportsRefreshService.a(SourceFile:134) 
                      at com.google.android.gms.herrevad.services.RemoteReportsRefreshService.a(SourceFile:89) 
                      at com.google.android.gms.gcm.au.run(SourceFile:140) 
                     Caused by: com.android.volley.ServerError 
                      at com.android.volley.toolbox.BasicNetwork.performRequest(SourceFile:163) 
                      at com.google.android.gms.common.server.v.performRequest(SourceFile:64) 
                      at com.android.volley.NetworkDispatcher.run(SourceFile:112) 
05-24 21:29:05.946 1532-2199/system_process I/AccountManagerService: getTypesVisibleToCaller: isPermitted? true 
05-24 21:29:05.947 2114-17806/com.google.android.gms E/ProtoReq: [19079] a.a: want to send authenticated request, but no Google account on device 
05-24 21:29:18.207 2114-18125/com.google.android.gms W/BaseAppContext: Using Auth Proxy for data requests. 
+0

использование «10.0.0.2» или открытого типа CMD «IpConfig» скопировать IP оттуда и заменить локальный часть из URL с ним – MrDroid

+0

@mohammadawad Просто пробовал, но одно и то же происходит. Сообщение журнала не печатается. – user3484582

+0

что он показывает в logcat? есть ли какие-либо экскреции? – MrDroid

ответ

0

Итак, решение заключалось в том, чтобы изменить IP на соответствующий и добавить свой RequestQueue, который я забыл.

RequestQueue queue = Volley.newRequestQueue(getContext()); 
queue.add(loginRequest); 
Смежные вопросы