Я попытался реализовать вход в систему с помощью приложения «Флэш-сервер» в приложении для Android.
Это мой код API-интерфейса для сервера «Фляга».
from flask_httpauth import HTTPBasicAuth
@auth.login_required
def get_resource():
token = g.user.generate_auth_token(600)
return jsonify({
'id':g.user.id,
'username':g.user.username,
'token':token.decode('ascii')
}), 200
И это часть кода моего приложения для Android для входа в систему..
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.ConnectionPool;
import okhttp3.Credentials;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
void login_online(String user, String password) {
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(300, TimeUnit.SECONDS)
.readTimeout(300, TimeUnit.SECONDS)
.writeTimeout(300, TimeUnit.SECONDS)
.retryOnConnectionFailure(true)
.connectionPool(new ConnectionPool(0, 1, TimeUnit.NANOSECONDS))
.build();
String credential = Credentials.basic(username, password);
Request request = new Request.Builder()
.url(Global.baseUrl + "/api/resource")
.header("Authorization", credential)
.build();
client.newCall(request).enqueue(new Callback() {
public void onFailure(Call call, IOException e) {
....
}
public void onResponse(Call call, Response response) throws IOException {
try {
result = new JSONObject(response.body().string());
} catch (JSONException e) {
} catch (IOException e) {
//In some cases, IOException occurs when parsing response message.
}
}
}
}
Это хорошо работает в обычных случаях.Но в некоторых случаях OkHttp3 может не выполнить синтаксический анализ кода ответа, даже если сервер возвращает код 200.Это означает, что веб-сервер Flask работает хорошо.Так что, я думаю, некоторые части были потеряны или изменены в коде ответа при его передаче на клиентскую сторону.Это может вызвать такую ошибку.В любом случае, я не уверен в этом.Но проблема в том, что в плохих условиях это случается очень часто.Поэтому мне приходилось пробовать более 5 раз в крайне плохих случаях.
Кроме того, в некоторых случаях веб-сервер фляги может получать поврежденные данные со стороны клиента через OkHttp3.
Мой веб-сервер флягиработает на сервере Amazon EC2.
Я не могу понять, откуда появляются ошибки.
Есть предложения от сообщества?