2015-09-14 6 views
0

Я пытаюсь сделать логин на своем веб-сайте, используя свой API. В основном, когда я запускаю Login, я получил ответ null, я не знаю, является ли сервер, который не получает мой запрос или что-то еще, потому что я протестировал свой json-объект и все в порядке, я протестировал POST-запрос с именем пользователя и пароль, как параметры для моего сервера, и он работает правильно, поэтому я не знаю, почему мое приложение не взаимодействует с сервером, оно все равно появляется Внутренняя ошибка сервера.Android Войти с json

Вот мой код:

public void login(View button) { 
    EditText userEmailField = (EditText) findViewById(R.id.userEmail); 
    mUserEmail = userEmailField.getText().toString(); 
    EditText userPasswordField = (EditText) findViewById(R.id.userPassword); 
    mUserPassword = userPasswordField.getText().toString(); 

    if (mUserEmail.length() == 0 || mUserPassword.length() == 0) { 
     // input fields are empty 
     Toast.makeText(this, "Please complete all the fields", 
      Toast.LENGTH_LONG).show(); 
     return; 
    } else { 
     LoginTask loginTask = new LoginTask(LoginActivity.this); 
     loginTask.setMessageLoading("Logging in..."); 
     loginTask.execute(LOGIN_API_ENDPOINT_URL); 
    } 
} 
private class LoginTask extends UrlJsonAsyncTask { 
    public LoginTask(Context context) { 
     super(context); 
    } 

    @Override 
    protected JSONObject doInBackground(String... urls) { 
     @SuppressWarnings("deprecation") 
     DefaultHttpClient client = new DefaultHttpClient(); 
     @SuppressWarnings("deprecation") 
     HttpPost post = new HttpPost(urls[0]); 
     JSONObject holder = new JSONObject(); 
     JSONObject userObj = new JSONObject(); 
     String response = ""; 
     JSONObject json = new JSONObject(); 

     try { 
      try { 
       // setup the returned values in case 
       // something goes wrong 
       json.put("success", false); 
       json.put("info", "Something went wrong. Retry!"); 
       // add the user email and password to 
       // the params 
       userObj.put("username", mUserEmail); 
       userObj.put("password", mUserPassword); 
       holder.put("user", userObj); 
       @SuppressWarnings("deprecation") 
       StringEntity se = new StringEntity(holder.toString()); 
       post.setEntity(se); 

       // setup the request headers 
       post.setHeader("Accept", "*/*"); 
       post.setHeader("Content-Type", "application/json"); 

       @SuppressWarnings("deprecation") 
       ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
       response = client.execute(post, responseHandler); 
       String code_response=response.getBytes().toString(); 
       json = new JSONObject(response); 
       json.put(code_response, ""); 

      } catch (HttpResponseException e) { 
       e.printStackTrace(); 
       Log.e("ClientProtocol", "" + e); 
       Log.e("Localize", e.getLocalizedMessage()); 
       Log.e("MESSAGE", e.getMessage()); 
       e.printStackTrace(); 
       json.put("info", "Email and/or password are invalid. Retry!"); 
      } catch (IOException e) { 
       e.printStackTrace(); 
       Log.e("IO", "" + e); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      Log.e("JSON", "" + e); 
     } 

     return json; 
    } 

    @Override 
    protected void onPostExecute(JSONObject json) { 
     try { 
      if (json.getBoolean("success")) { 
       // everything is ok 
       SharedPreferences.Editor editor = mPreferences.edit(); 
       // save the returned auth_token into 
       // the SharedPreferences 
       editor.putString("AuthToken", json.getJSONObject("data").getString("auth_token")); 
       editor.commit(); 

       // launch the HomeActivity and close this one 
       Intent intent = new Intent(getApplicationContext(), Login_Page.class); 
       startActivity(intent); 
       finish(); 
      } 
      Toast.makeText(context, json.getString("info"), Toast.LENGTH_LONG).show(); 
     } catch (Exception e) { 
      // something went wrong: show a Toast 
      // with the exception message 
      Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG).show(); 
     } finally { 
      super.onPostExecute(json); 
     } 
    } 
} 

Это LogCat:

09-14 13:05:47.385 13798-13798/com.example E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
09-14 13:05:47.385 13798-13798/com.example E/SpannableStringBuilder﹕ SPAN_EXCLUSIVE_EXCLUSIVE spans cannot have a zero length 
09-14 13:06:05.044 13798-14159/com.example E/ClientProtocol﹕ org.apache.http.client.HttpResponseException: Internal Server Error 
09-14 13:06:05.044 13798-14159/com.example E/Localize﹕ Internal Server Error 
09-14 13:06:05.044 13798-14159/com.example E/MESSAGE﹕ Internal Server Error 

Спасибо ребята

+0

Вы можете использовать библиотеку GSon для запроса – Arunkumar

+0

Создать POJO и использовать библиотеку GSon установить POJO в строку и использовать его внутри stringentity – Arunkumar

+0

Внутренняя ошибка сервера означает ошибку на стороне сервера, так что вы должны начать искать оттуда. Посмотрите, что сервер получает в запросе, поэтому было бы легче узнать проблему с клиентом. –

ответ

0

Привет, ребята, я хотел только сказать, что я исправил проблему, только в случае, если кто-то есть та же проблема, я исправил, потому что серверу нужен простой json вместо объекта. После отправки простого json я получил 200 Ok. Спасибо, ребята

 Смежные вопросы

  • Нет связанных вопросов^_^