Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/55: Рейтинг темы: голосов - 55, средняя оценка - 4.91
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684

Retrofit 2: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

26.02.2018, 15:52. Показов 11442. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте всем!

Прошу помощи, т.к. много раз упирался в эту проблему, но так ее и не решил (гуглил про LoggingInterceptor() тоже чета не пошел у меня), короче суть:

Retrofit2 выкидывает в Failure при попытке получить json:
XML
1
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
Адрес Запроса
XML
1
 Call Request{method=GET, url=https://api.flickr.com/services/rest/?&method=flickr.photos.getRecent&api_key=2d9a5c2c1ecaa288720cfa6d456ed2ee&per_page=5&format=json, tag=null}
по нему выдает JSON:
Кликните здесь для просмотра всего текста
JSON
1
jsonFlickrApi({"photos":{"page":1,"pages":200,"perpage":5,"total":1000,"photo":[{"id":"26624877718","owner":"144649841@N07","secret":"4ef59c910e","server":"4747","farm":5,"title":"IMG_4789.JPG","ispublic":1,"isfriend":0,"isfamily":0},{"id":"26624877968","owner":"155371802@N07","secret":"3f663f8a9e","server":"4626","farm":5,"title":"","ispublic":1,"isfriend":0,"isfamily":0},{"id":"40453598302","owner":"154973691@N04","secret":"3edb84a5a6","server":"4602","farm":5,"title":"9Dragons ultra 2018","ispublic":1,"isfriend":0,"isfamily":0},{"id":"40453598852","owner":"98899086@N08","secret":"95e314153d","server":"4621","farm":5,"title":"IMG-20180225-WA0046","ispublic":1,"isfriend":0,"isfamily":0},{"id":"40495855391","owner":"134067371@N02","secret":"08cf5d2b9c","server":"4707","farm":5,"title":"New Balance 574 \u201cIconic Collaboration\u201d pack","ispublic":1,"isfriend":0,"isfamily":0}]},"stat":"ok"})


Сгенерил такие PoJo:
1
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class Photo {
 
    @SerializedName("photos")
    @Expose
    private Photos photos;
    @SerializedName("stat")
    @Expose
    private String stat;
 
    public Photos getPhotos() {
        return photos;
    }
 
    public void setPhotos(Photos photos) {
        this.photos = photos;
    }
 
    public String getStat() {
        return stat;
    }
 
    public void setStat(String stat) {
        this.stat = stat;
    }
 
}

2
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public class Photos {
 
    @SerializedName("page")
    @Expose
    private Integer page;
    @SerializedName("pages")
    @Expose
    private Integer pages;
    @SerializedName("perpage")
    @Expose
    private Integer perpage;
    @SerializedName("total")
    @Expose
    private Integer total;
    @SerializedName("photo")
    @Expose
    private List<Photo_> photo = null;
 
    public Integer getPage() {
        return page;
    }
 
    public void setPage(Integer page) {
        this.page = page;
    }
 
    public Integer getPages() {
        return pages;
    }
 
    public void setPages(Integer pages) {
        this.pages = pages;
    }
 
    public Integer getPerpage() {
        return perpage;
    }
 
    public void setPerpage(Integer perpage) {
        this.perpage = perpage;
    }
 
    public Integer getTotal() {
        return total;
    }
 
    public void setTotal(Integer total) {
        this.total = total;
    }
 
    public List<Photo_> getPhoto() {
        return photo;
    }
 
    public void setPhoto(List<Photo_> photo) {
        this.photo = photo;
    }
 
}

3
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
public class Photo_ {
 
    @SerializedName("id")
    @Expose
    private String id;
    @SerializedName("owner")
    @Expose
    private String owner;
    @SerializedName("secret")
    @Expose
    private String secret;
    @SerializedName("server")
    @Expose
    private String server;
    @SerializedName("farm")
    @Expose
    private Integer farm;
    @SerializedName("title")
    @Expose
    private String title;
    @SerializedName("ispublic")
    @Expose
    private Integer ispublic;
    @SerializedName("isfriend")
    @Expose
    private Integer isfriend;
    @SerializedName("isfamily")
    @Expose
    private Integer isfamily;
 
    public String getId() {
        return id;
    }
 
    public void setId(String id) {
        this.id = id;
    }
 
    public String getOwner() {
        return owner;
    }
 
    public void setOwner(String owner) {
        this.owner = owner;
    }
 
    public String getSecret() {
        return secret;
    }
 
    public void setSecret(String secret) {
        this.secret = secret;
    }
 
    public String getServer() {
        return server;
    }
 
    public void setServer(String server) {
        this.server = server;
    }
 
    public Integer getFarm() {
        return farm;
    }
 
    public void setFarm(Integer farm) {
        this.farm = farm;
    }
 
    public String getTitle() {
        return title;
    }
 
    public void setTitle(String title) {
        this.title = title;
    }
 
    public Integer getIspublic() {
        return ispublic;
    }
 
    public void setIspublic(Integer ispublic) {
        this.ispublic = ispublic;
    }
 
    public Integer getIsfriend() {
        return isfriend;
    }
 
    public void setIsfriend(Integer isfriend) {
        this.isfriend = isfriend;
    }
 
    public Integer getIsfamily() {
        return isfamily;
    }
 
    public void setIsfamily(Integer isfamily) {
        this.isfamily = isfamily;
    }
 
}

interface:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public interface NetworkService {
 
    @GET("posts")
    Observable<List<TextInfo>> getTextInfo();
 
   // @Headers("Content-Type: application/json")
    @GET("services/rest/?")
    Call<Photo> getPhotosList(
            @Query("method") String method,
            @Query("api_key") String api_key,
            @Query("per_page") String per_page,
            @Query("format") String format
    );
}

Client:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
    private static Retrofit getRetrofitInstance() {
        Gson gson = new GsonBuilder()
                .setLenient()
                .create();
        return new Retrofit.Builder()
                .baseUrl(ROOT_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();
    }
    
    public static NetworkService getApiService() {
        return getRetrofitInstance().create(NetworkService.class);
    }

MainActivity:
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  public void loadJSONPhotos(int per) {
            PER_PAGE = String.valueOf(per);
 
            NetworkService api = new RetrofitClient(BASE_URL_PHOTOS).getApiService();
            Call<Photo> call = api.getPhotosList(METHOD,API_KEY,PER_PAGE, FORMAT);
            Log.d("logTagPhotos", "Call "+call.request().toString());
            call.enqueue(new Callback<Photo>() {
                public void onResponse(Call<Photo> call, Response<Photo> response) {             
                    if (response.isSuccessful()) {
                        response.body().toString();               
                    } else {
                        Toast.makeText(getApplicationContext(), "Bad Response", Toast.LENGTH_SHORT).show();
                    }
                }
                @Override
                public void onFailure(Call<Photo> call, Throwable t) {
                    Toast.makeText(getApplicationContext(), "Что-то не так...", Toast.LENGTH_SHORT).show();
                    Log.d("logTagPhotos", "Throwable "+t.getMessage());
                }
            });
        } else {
            Toast.makeText(getApplicationContext(), "Нет интернета", Toast.LENGTH_SHORT).show();
        }


Помогите пожалуйста разобраться?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2018, 15:52
Ответы с готовыми решениями:

GSON и Json -Expected BEGIN_OBJECT but was BEGIN_ARRAY;
Привет всем, столкнулся с одной проблемой, использую/тестирую GSON в качестве обработчика json, который приходит с сайта, в стандартном...

Постоянная ошибка SyntaxError: JSON.parse: unterminated string at line 1 column 132829 of the JSON data
что бы не делал, нормально в консоле JSON не выводит, нужно раз 20 обновить только тогда выведет json, а так постоянно пишет SyntaxError:...

Error on line 11 at column 198: EntityRef: expecting ';'
подскажите в чем ошибка, сама ошибка на этой строке $user = $id ? $id : $user_id; $req_u = mysql_query(&quot;SELECT * FROM `users`...

4
2 / 2 / 1
Регистрация: 08.03.2015
Сообщений: 11
26.02.2018, 16:14
по запросу
https://api.flickr.com/service... ormat=json
Тебе возвращает строку
jsonFlickrApi({"stat":"fail","code":100, "message":"Invalid API Key (Key not found)"})
json находиться внутри строки, как вариант напиши чтоб приходило тебе строка, затем ее обрабатываешь и только потом парсишь.
0
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 684
26.02.2018, 16:24  [ТС]
Цитата Сообщение от KuzmaChorny Посмотреть сообщение
как вариант напиши чтоб приходило тебе строка, затем ее обрабатываешь
как это? можно чуть подробнее?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
26.02.2018, 16:30
Лучший ответ Сообщение было отмечено disx как решение

Решение

сначала надо добавить еще один query параметр
nojsoncallback=1
тогда строка будет приходить без этого jsonFlickrApi()
1
26.02.2018, 16:46  [ТС]

Не по теме:

Pablito,:yahoo::senor:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
02-26 13:42:23.541 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: Call Request{method=GET, url=https://api.flickr.com/services/rest/?&method=flickr.photos.getRecent&api_key=2d9a5c2c1ecaa288720cfa6d1aced2ee&per_page=25&format=json&nojsoncallback=1, tag=null}
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: onResponse 
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 25
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 26625877488
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 26625877558
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 26625877818
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 26625878038
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 26625878058
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 26625879078
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 26625879288
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 38686510470
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 38686510700
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 38686510990
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 39601090475
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 39601091315
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 39601092135
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 39786802104
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 39786802744
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 39786804604
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 40454423632
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 40454425172
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 40454425482
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 40496800211
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 40496801241
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 40496801901
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 40496802541
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 40496802871
02-26 13:42:24.113 9696-9696/com.dis.getphotosrx2retrofit2 D/logTagPhotos: isSuccessful() 40496804081

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.02.2018, 16:46
Помогаю со студенческими работами здесь

Ошибка #: 353 : class anonse.link is abstract; cannot be instantiated at line 26, column 12
Вылазит такая ошибка, че тут не так??? 'Frame_main.java': Ошибка #: 353 : class anonse.link is abstract; cannot be instantiated at line...

Error: comma, colon or end of line expected
Здравствуйте! Помогите, пожалуйста, разобраться с ошибкой. На 13 и 15 строке ошибка &quot;error: comma, colon or end of line...

Ошибка Syntax error at line 1 while loading: expected ';', got 'request'
Подскажите, как исправить эту ошибку Syntax error at line 1 while loading: expected ';', got 'request' Откуда вообще она появилась?...

В чём суть ошибки? Warning: Parameter 3 to showBlogSection() expected to be a reference, value given in on line 100
Здравствуйте. Не могу понять в чем суть ошибки Warning: Parameter 3 to showBlogSection() expected to be a reference, value given in on line...

PATH в string
Собственно, вопрос, - как загнать данные с системного PATH в string? Надо получить такие же данные как при вводе set PATH в консоли.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru