Android Okhttp Запрос не отвечает - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь опубликовать объект JSON на странице входа в приложение. Я искал много примеров и пытался их найти. Но только мои устройства с Android 4.3 работают нормально, а другие устройства верхнего уровня API даже не возвращаются. Мой код, как показано ниже:

@Override
public void onClick(View v) {

    switch (v.getId()) {

        case R.id.LoginBtn:
            loading.show();

            try {
                login();
            } catch (JSONException e) {
                e.printStackTrace();
            }
            break;



    }
}

public void login(){
    okhttp3.OkHttpClient client = new okhttp3.OkHttpClient.Builder()
            .connectTimeout(10, TimeUnit.SECONDS)
            .writeTimeout(10,TimeUnit.SECONDS)
            .readTimeout(10,TimeUnit.SECONDS)
            .build();

    final JSONObject JObje = new JSONObject();
    try {

        JObje.put("Username", String.valueOf(Username.getText()));
        JObje.put("Password", String.valueOf(Password.getText()));
    } catch (JSONException e) {
        e.printStackTrace();
    }

    okhttp3.Request request = null;
    okhttp3.RequestBody body = null;

    body = new FormBody.Builder()
            .addEncoded("JSONVALUE", String.valueOf(JObje))
            .build();

    request = new okhttp3.Request.Builder()
            .url(context.getString(R.string.rutKontrolServis))
            .addHeader("Content-Type", "application/x-www-form-urlencoded")
            .post(body)
            .build();


    client.newCall(request).enqueue(new okhttp3.Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, okhttp3.Response response) throws IOException {
                Log.d("TAG","responded");
            }
        });
}

URL-адрес R.string.rutKontrolServis выглядит следующим образом: https://ourwebsite.com/folder/package_name.mywebservice

В моем файле Gradle я добавил эту зависимость: compile 'com.squareup.okhttp3: okhttp: 3.11.0'

Существует ли какой-либо другой синтаксис запроса или какие-либо ограничения относительно сертификатов tls или ssl с более новыми устройствами уровня API? Может ли кто-то показать точку

Ответы [ 2 ]

0 голосов
/ 03 августа 2019

Иногда OkHTTP просто внезапно перестает отвечать - никаких результатов onFailure, никаких результатов onResponse, даже после увеличения времени ожидания. Ничего такого. Переключение вашего провайдера Wi-Fi / сети на другого провайдера мне помогло.

0 голосов
/ 09 ноября 2018

Вы пытались увеличить время ожидания соединения и время ожидания чтения? Я думаю, что 10 секунд слишком мало:

okhttp3.OkHttpClient client = new okhttp3.OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.SECONDS)
        .writeTimeout(10,TimeUnit.SECONDS)
        .readTimeout(10,TimeUnit.SECONDS)
        .build();

Увеличьте до 30 секунд и повторите попытку.

...