Android OkHTTP возвращает несовместимую строку? - PullRequest
0 голосов
/ 24 мая 2018

Я использую OkHTTP, чтобы просто получить текст из тела URL:

class DownloadUrl {
    String readUrl(String myUrl) throws IOException,NullPointerException {

        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
            .url(myUrl)
            .build();

        Response response = client.newCall(request).execute();

        return response.body().string();
    }
}

Однако я получаю непоследовательную строку, несмотря на то, что URL-адрес и его содержимое всегда одинаковы.Некоторые возвращенные строки пропускают блоки JSON, например, я должен получить это:

"html_attributions" : [],
   "results" : [
         "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/shopping-71.png",
         "id" : "b89943f74e20eafb8959ace996a6f35cd303d5ff",
         "name" : "Circle K",
         "opening_hours" : {
            "open_now" : true,
            "weekday_text" : []
         },
         "photos" : [
            {
               "height" : 400,
               "html_attributions" : [
                  "\u003ca href=\"https://maps.google.com/maps/contrib/114668422179892290420/photos\"\u003eCircle K\u003c/a\u003e"
               ],
               "photo_reference" : "CmRaAAAAAdubSCt5u9IrI6bsL91DGLdIm2SMO39SaKGxKKmrj-ygxrCmIjUzG0DwrBgcX56DdpEFRBev29cdA4ljZnIR7lvPlP3jBhHkBxliRkGlAlfkAh9TiQvVuyNNQLnzIcsuEhAsc0Px0hV4mFTZruHRWLh9GhTIePuzk5JxV1QewH3jimkAKIzALw",
               "width" : 400
            }
         ],  

Вместо этого я получаю:

"html_attributions" : [],
   "results" : [
         "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
         "id" : "1a830f99aab4e7afa143b2c8d03545ea7c1e9432",
         "name" : "McDonald's",
         "opening_hours" : {
            "open_now" : true,
            "weekday_text" : []
         },

Часть "photos" изJSON оставляют на некоторых звонках, есть идеи?Благодаря.

1 Ответ

0 голосов
/ 26 мая 2018

Согласно документации по Google Place Search (я полагаю, это услуга, которую вы используете), каждый result объект может содержать:

photos[] -массив photo объектов, каждый из которых содержит ссылку на изображение. Поиск по месту выдаст не более одного photo объекта .

Кроме того, Документация по Google Place Photos сообщает, что:

Ответ [...] будет содержать поле photos[], если у места есть соответствующее фотографическое содержание.

Это означает, что если в конкретном результате нет фотографий, то массив photosне будет присутствовать вообще в ответе.

Приведенные вами примеры не относятся к одному и тому же месту: в первом случае вы получаете результат для "Круга K", а во втором -для "Макдональдс".Исходя из этого, ответ кажется согласованным с тем, что говорится в документации.

...