Я использую асинхронный Http-клиент loopj Android, и у меня проблема с регистрацией. Регистрационный код:android loopj library Внутренняя ошибка сервера
private void register(){
RequestParams params = new RequestParams();
params.put("email", "[email protected]");
params.put("name", "Lurk");
params.put("surname", "More");
params.put("password", "123456789");
params.put("person", "0");
Client.post("register", params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
super.onSuccess(statusCode, headers, response);
//Log.d("Json_reg", response.toString());
try {
JSONObject idJson = response.getJSONObject("_id");
Log.d("Json_reg", response.toString());
String strId = idJson.getString("$iod");
Log.d("my_id", strId);
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
super.onFailure(statusCode, headers, throwable, errorResponse);
Log.d("THROW", throwable.toString());
}
});
}
Бревна показать мне:
org.apache.http.client.HttpResponseException: Внутренняя ошибка сервера 07-28 11: 14: 48,676 20728-20728/com.example .murager.httpapp W/JsonHttpRH: OnFailure (интермедиат, заголовок [], Throwable, JSONObject) не был переопределен, но обратный вызов был получен org.apache.http.client.HttpResponseException: Внутренняя ошибка сервера
но когда Вход verything в порядке: Логин Код:
private void login(){
RequestParams params = new RequestParams();
params.put("email", "[email protected]");
params.put("password", "123456789");
params.put("person", "0");
Client.post("login", params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
super.onSuccess(statusCode, headers, response);
try {
Log.d("Json_con", response.toString());
String nameStr = response.getString("name");
String snameStr = response.getString("surname");
JSONObject id = response.getJSONObject("_id");
String strId = id.getString("$oid");
String str = nameStr + " " + snameStr + " " + strId;
tv.setText(str);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
Мой клиент здесь:
public class Client {
private static AsyncHttpClient client = new AsyncHttpClient();
private static String BASE_URL = "some_url";
public Client() {
}
public static void post(String url, RequestParams params, AsyncHttpResponseHandler handler){
client.post(getAbsoluteUrl(url), params, handler);
}
private static String getAbsoluteUrl(String relativeUrl) {
return BASE_URL + relativeUrl;
}
}
Мой вопрос, почему на две аналогичные функции показывают разные результаты?
Регистрация с устаревшей библиотекой отлично работает. Код здесь:
private void makeRegistration(){
String nameString = nameEditText.getText().toString();
String surnameString = nameEditText.getText().toString();
String emailString = emailEditText.getText().toString();
String passwordString = passwordEditText.getText().toString();
ArrayList<NameValuePair> param = new ArrayList<>();
param.add(new BasicNameValuePair("name", nameString));
param.add(new BasicNameValuePair("surname", surnameString));
param.add(new BasicNameValuePair("email", emailString));
param.add(new BasicNameValuePair("password", passwordString));
param.add(new BasicNameValuePair("person", userTypeInt + ""));
Log.d("User_type", userTypeInt + "");
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = jsonParser.makeHttpRequest("http://server/api/v1/r", "POST", param);
Log.d("What_I_get_2", jsonObject.toString() + "\n");
try {
String name = jsonObject.getString("name");
String surname = jsonObject.getString("surname");
String id = jsonObject.getString("_id");
Log.d("What_I_get", jsonObject.toString() + "\n" + id);
} catch (JSONException e) {
e.printStackTrace();
}
}
Но когда я использую устаревший Apatch DefaultHttpClient, все работает нормально. Возможно, проблема в этой библиотеке loopj. Вы использовали эту библиотеку в своем проекте? – zxc123qwe098qqq
отправьте этот код тоже .. в этом случае – Akhil