OkHttp3 не возвращает ответ - PullRequest
0 голосов
/ 25 июня 2019

Существует множество примеров выполнения запросов с помощью OkHTTP3, однако я все еще не могу сделать правильный запрос.Насколько я знаю, мои настройки верны.

Я продолжаю получать ответы, которые выглядят как показано ниже.Я не знаю, что они имеют в виду.

{"contentLength": 238, "contentTypeString": "application / json", "source": {"buffer": {"size": 0}, "закрыто": ложь, "источник": { "BytesRead": 0, "завершено" ложь "делегат": { "закрыто": ложь, "закончил": правда, "maxByteCount": 16777216, "ReadBuffer": {"head": {"data": [123,34,105,115,85,115,101,114,83,117,98,115,99,114,105,98,101,100,34,58,116,114,117,101,44,34,115,101 ...]}

Способ Iя делаю мои запросы в том, что я передаю объект запроса, а затем я использую метод RequestBody.create () для преобразования моего объекта запроса в объект OkHttp RequestBody.Я начал думать, что мое тело запроса неверно, поэтому я жестко запрограммировал строку json.Я получаю те же результаты.Что я делаю неправильно?Я должен обернуть это в asynctask?Я не думал, что это так, если использовать enqueue.

private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");

    public void createPostRequest(Request request, final ResultCallback callback,
                                  String url, HashMap<String, String> header) {
        // create gson object
        final Gson gson = new Gson();
        String testRequest = "{\"fName\": \"John\",\"lName\": \"Doe\",\"phoneNumber\": \"5555555\",\"isValidated\": \"false\",\"city\": \"Los Angeles",\"street\": \"Sesame Street\"}";

        // set header
        Headers headers = Headers.of(header);
        // form request body
        RequestBody requestBody = RequestBody.create(JSON, testRequest );
        // form request.
        Request okHttpRequest = new Request.Builder()
                .url(url)
                .post(requestBody)
                .headers(headers)
                .build();

        // prepares the request to be executed
        client.newCall(okHttpRequest).enqueue(new okhttp3.Callback() {
            @Override
            public void onFailure(@NonNull Call call, @NonNull IOException e) {
                // handle error
            }

            @Override
            public void onResponse(@NonNull Call call, @NonNull Response response) {
                if (response.isSuccessful()) {
                    String jsonString = gson.toJson(response.body());
                    // jsonString is gibberish as posted above
                }
            }
        });
    }

Я не получаю никаких ошибок в своих журналах.Это все, что возвращается из OkHttp

2019-06-25 12: 46: 27.435 23219-23248 / com.demo.android.address W / oid.address.dem: Доступ к скрытому методу Lcom/ android / org / concerypt / OpenSSLSocketImpl; -> getAlpnSelectedProtocol () [B (легкий серый список, отражение) 2019-06-25 12: 46: 27.698 23219-23248 / com.demo.android.address W / oid.address.dem: Не удалось разрешить Lokhttp3 / internal / http / RealResponseBody;класс аннотации 2132 2019-06-25 12: 46: 27.699 23219-23248 / com.demo.android.address W / oid.address.dem: Невозможно разрешить Lokhttp3 / internal / http / RealResponseBody;класс аннотации 2132 2019-06-25 12: 46: 27.702 23219-23248 / com.demo.android.address W / oid.address.dem: Невозможно разрешить Lokhttp3 / ResponseBody;класс аннотации 2132 2019-06-25 12: 46: 27.703 23219-23248 / com.demo.android.address W / oid.address.dem: Невозможно разрешить Lokhttp3 / ResponseBody;класс аннотации 2132 2019-06-25 12: 46: 27.707 23219-23248 / com.demo.android.address W / oid.address.dem: Невозможно разрешить Lokio / Buffer;класс аннотации 2132 2019-06-25 12: 46: 27.708 23219-23248 / com.demo.android.address W / oid.address.dem: Невозможно разрешить Lokio / Buffer;класс аннотации 2132

1 Ответ

1 голос
/ 26 июня 2019

вы конвертируете в JSON вместо FROM. Вот как это должно быть

String str = gson.fromJson("\"abc\"", String.class);
...