OkHttpRequest通常无法解析Android应用程序中Flask Web服务器的响应

时间:2019-06-21 07:58:52

标签: android flask amazon-ec2

我试图在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.

            }
        }
    }
}

这在通常情况下效果很好。但是,在某些情况下,即使服务器返回200代码,OkHttp3仍可能无法解析响应代码。这意味着Flask Web服务器运行良好。因此,我认为响应代码在传输到客户端时会丢失或更改某些部分。可能会导致这种错误。无论如何,我不确定。但是问题是,在恶劣的条件下,这种情况经常发生。因此,在极端恶劣的情况下,我不得不尝试5次以上。

此外,在某些情况下,flask Web服务器可能会通过OkHttp3从客户端接收到损坏的数据。

我的Flask Web服务器正在Amazon EC2服务器上运行。

我无法抓住导致我的错误的原因。

请帮助我。

0 个答案:

没有答案