Я пытаюсь сделать логин на своем веб-сайте, используя свой 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
Спасибо ребята
Вы можете использовать библиотеку GSon для запроса – Arunkumar
Создать POJO и использовать библиотеку GSon установить POJO в строку и использовать его внутри stringentity – Arunkumar
Внутренняя ошибка сервера означает ошибку на стороне сервера, так что вы должны начать искать оттуда. Посмотрите, что сервер получает в запросе, поэтому было бы легче узнать проблему с клиентом. –