0
お時間を頂きましてありがとうございます。私は学校向けにAndroid Appをプログラミングしており、Moodleログイン用の認証書式が必要です(サーバーは/index.phpで終わります)。Moodle外部Androidアプリ(Okhttp)でログイン
- 私の目標:アクティブCookieを含むレスポンスの「Set-Cookie」ヘッダーを取得します。これは、サーバステータスが "303(その他を参照)"を返す場合に与えられます。
- 私の質問:ステータス「303」(したがって正しいCookie)を取得するには、Login Serverに何を投稿する必要がありますか?
".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 RequestsのWebサイト)でそれをテストし、通常のパラメータのように "username"と "password"を投稿した場合にのみ動作します。
すべての回答とヒントに感謝します!
マイ権限:だからここに右のコードは '<使用許可アンドロイド:名= "android.permission.INTERNETあなた"/> <使用許可アンドロイド:名= "android.permission.ACCESS_NETWORK_STATEの" /> ' –