Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 582
Записей в блоге: 1
1

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

26.02.2018, 15:52. Просмотров 1145. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2018, 15:52
Ответы с готовыми решениями:

Error on line 11 at column 198: EntityRef: expecting ';'
подскажите в чем ошибка, сама ошибка на этой строке $user = $id ? $id :...

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

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

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

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

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

Решение

сначала надо добавить еще один query параметр
nojsoncallback=1
тогда строка будет приходить без этого jsonFlickrApi()
1
disx
26.02.2018, 16:46  [ТС]     Retrofit 2: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
  #5

Не по теме:

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
26.02.2018, 16:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2018, 16:46
Привет! Вот еще темы с ответами:

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

пишет ошибку на 4 таблице prodaja Msg 1778, Level 16, State 0, Line 1 Column 'prodavci.kod_prodavca_id' is not the same data type as referenc
create table prodaja_kompov( tovari_id integer identity (1,1) not null primary...

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
Всем привет, пытаюсь произвести запрос к обработчику c помощью AJAX, выдает...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru