Спасибо за ваше время. Я программирую приложение для Android для школы и нуждаюсь в форме аутентификации для входа в Moodle (сервер заканчивается на /index.php).Moodle Войти с помощью внешнего приложения для Android (Okhttp)
- My Goal: Получите заголовок «Set-Cookie» в ответ с активным Cookie в нем. Это дается, если статус сервера возвращается «303 (см. Раздел« Другое »)».
- Мой вопрос: что мне следует публиковать на сервере входа, чтобы получить статус «303» (и, следовательно, также правое Cookie)?
Я не знаю, если метод «.add» является правильным или неправильным, или если я должен отправить более или менее сервер.
class MoodleLogin{
public static void FirstRequest(String url) throws Exception {
final OkHttpClient client = new OkHttpClient();
//FORM BODY
RequestBody formBody = new FormBody.Builder()
.add("username", USERNAME) // Username
.addEncoded("password", PASSWORT) //Passwort
.add("token", "6f65e84f626ec97d9eeee7ec45c88303") //Security Key for Moodle mobile web service (I dont know if I need that)
.build();
// A normal Request
Request request = new Request.Builder()
.url(url)
.post(formBody)
.build();
// Asynchronous Call via Callback with onFailure and onResponse
client.newCall(request).enqueue(new okhttp3.Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i("Internet", "request failed: " + e.toString());
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (!response.isSuccessful()) { // Server Status is not 200 - THAT IS WHAT I WANT
Log.d("Server Status", response.message().toString());
throw new IOException("Unexpected code ");
} else { // Server Status is 200(OK)
Log.d("Server Status", response.message().toString());
}
response.body().close();
}
}); // End of "onResponse"
}
Этот мир кода возвращает статус сервера «200» (что не так в моем случае). Кто-нибудь знает, что я должен изменить, чтобы получить статус «303»? Я протестировал его с hurl.it (сайт для HTTP-запросов), и он работает, только если я разместил «имя пользователя» и «пароль», как обычные параметры.
Я благодарен за каждый ответ и отзыв!
Мои права: '<использует-разрешение андроида: имя = "android.permission.INTERNET"/> <использует-разрешение андроида: имя = "android.permission.ACCESS_NETWORK_STATE" /> ' –