Я работаю в приложении для Android, которое должно отправлять электронную почту пользователя методом post.Конечная точка API находится в https://api -iddog.idwall.co / , когда я уже выполнил некоторые тесты и смог получить значения отсюда.Я использую библиотеку Loopj.
Тем не менее, мне было поручено использовать эту конечную точку:
https://api -iddog.idwall.co / signup
Руководство по документациипоказывает, что мне нужно создать метод POST, используя следующие параметры:
с использованием Content-Type: application/json
header
, а URL-адрес публикации должен выглядеть примерно так:
ApiPost Doc
Имея все это в виду, я получил метод create под названием attempPost()
.В этом методе я создаю объект AsyncHttpRequest
, RequestParams
и сохраняем действительное электронное письмо, введенное пользователем.
private void attempPost() {
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
String url = "https://api-iddog.idwall.co/signup";
String userEmail = userEmailView.getText().toString();
JSONObject jsonEmail = new JSONObject();
try {
jsonEmail.put("email", userEmail);
} catch (JSONException e) {
e.printStackTrace();
}
Log.d("Dog", " " + jsonEmail.toString());
params.put("-d", jsonEmail);
client.addHeader("Content-Type", "application/json");
client.post(url, params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.d("Dog", "onSucess" + responseBody.toString());
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.e("Dog", "" + error.toString());
}
});
}
Этот метод вызывается в OnclickListener
, а журналвозвращая сообщение под названием BadRequest и код состояния 400. Я уже пытался применить некоторые примеры кода из документа Loopj, но я не работал.Может ли кто-нибудь дать мне понимание того, что я делаю неправильно?Из того, что я могу собрать, ответом на успех должна быть строка (токен), и мне нужен этот токен для завершения проекта.
РЕДАКТИРОВАТЬ.
Я немного больше поработал с документацией и другими примерами здесь, в стеке, и обнаружил следующее: РАЗМЕЩЕНИЕ JSON / XML с использованием android-async-http (loopj)
ВВ принятом ответе есть пример того, как опубликовать JSON.
Затем я внес несколько изменений в свой метод tryPost.
private void attempPost() {
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
String url = "https://api-iddog.idwall.co/signup";
String userEmail = userEmailView.getText().toString();
JSONObject jsonParams = new JSONObject();
try {
jsonParams.put("email", "your@email.com");
} catch (JSONException e) {
e.printStackTrace();
}
client.post(getApplicationContext(), url, jsonParams, "application/json", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
Log.d("Dog", "onSucess" + responseBody.toString());
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
Log.e("Dog", "" + error.toString());
Log.e("Dog", "status code " + String.valueOf(statusCode));
}
});
}
Но Android Studio подсказывает мне преобразовать jsonParams в сущность.В примере, который я получил из стека, он использует следующий код для достижения этой цели:
StringEntity entity = new StringEntity(jsonParams.toString());
Однако моя Android-студия получает ужас, который говорит:
Необработанное исключение: java.io.UnsupportedEncodingException,
До этого момента я не мог придумать способ решить эту проблему.