Как проверить, возвращает ли JSON respone [] или ответ с телом, используя Java? - PullRequest
1 голос
/ 20 марта 2020

У меня есть API, который обращается несколько раз для разных идентификаторов событий.
У немногих есть дата, а у немногих нет. Я получаю эту ошибку:

Преждевременный конец тела сообщения, закодированного в чанке: ожидается закрытие чанка

Вот мой код:

CloseableHttpClient client = HttpClients.createDefault();
HttpGet request = new HttpGet("my API URL");

System.out.println("request:"+request.getURI());
String list = request.getURI().toString();

request.addHeader("Authorization",bearerToken); // Adding the bearer token
request.addHeader("Content-Type", "application/json");

CloseableHttpResponse response = client.execute(request);

//try
//{
    System.out.println(response.getStatusLine());
    System.out.println(response.getEntity().getContentLength());

    HttpEntity ent = response.getEntity();

    if(ent!=null)
    {
        //InputStream in = new PushbackInputStream(ent.getContent());
        //in = new ByteArrayInputStream(EntityUtils.toByteArray(ent));
        EntityUtils.consume(ent);
        System.out.println(response.getEntity());
        //in.close();
    }

Может кто-нибудь скажите мне, где я иду не так или как мы должны это делать?

Если в моем ответе нет данных, мне нужно просто распечатать их и go перейти к следующему идентификатору события и проверить.
Некоторые из моих API возвращают только []. Очень плохо знаком с Java.

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

Вы пробовали проверить, равна ли длина объекта json нулю?

например.

if(ent.length == 0){
    //Do thing
}
0 голосов
/ 20 марта 2020

Когда вы используете библиотеки json, у них обычно есть несколько методов для проверки того, пустой или нет объект json вы можете использовать их в своем коде, например, в JSONObject у нас есть метод isEmpty (), который возвращает логическое значение, и это то, что вам нужно.

, кроме того, если ваша проблема является лишь одним из условных ответов, просто поставьте это в вашем «условии if» после проверки, чтобы не быть нулевым, например:

if (string != null || !string.equals("[]")) {
    // your code 
}

, но это не общий способ, и таким образом ваш код не совместим со всеми видами ответов.

...