Помогите написать на С# условие для перехода на другую страницу пагинации

Tnyrtin

Client
Регистрация
12.05.2015
Сообщения
73
Благодарностей
8
Баллы
8
Добрый день. Нужна помощь с решением перехода на другую страницу пагинации при парсинге.
PHP:
//Делаю Get запрос к ресурсу в ответ получаю JSON документ. С помощью http://json2csharp.com/ получаю классы и вставляю их в owncode. Заранее формирую переменую(apiKey) для гет запроса
var strBody = ZennoPoster.HttpGet(apiKey, "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);

RootObject obj = new JavaScriptSerializer().Deserialize<RootObject>(strBody);

//перебираю все элементы в списке и складываю их в таблицу
foreach(Datum item in obj.data)
{
    PinsTable.AddRow(new String[]{item.url, item.note, item.created_at, item.link, item.image.original.url, item.counts.saves.ToString(), item.counts.comments.ToString()});
       
}
//Проблемное место! это переменная(nextPage) содержит в себе ссылку на следующую страницу пагинации. Мне нужно сделать GET запрос уже с переменной nextPage. Как это правильно сделать, чтобы не плодить полотно, т.к. этих страниц пагинации может быть много?
var nextPage = obj.page.next;
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 798
Баллы
113
Но надо правильно прописать условие выхода. Что находится в переменной obj.page.next, если следующей страницы нету?
Я предположил, что там пустая строка; если что-то другое, то блок if else надо переписать.
Должно работать, но я не проверял. Лучше сначала протестировать.

C#:
string url = apiKey;

while (true)
{
    var strBody = ZennoPoster.HttpGet(url, "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
     
    RootObject obj = new JavaScriptSerializer().Deserialize<RootObject>(strBody);
     
    //перебираю все элементы в списке и складываю их в таблицу
    foreach(Datum item in obj.data)
    {
        PinsTable.AddRow(new String[]{item.url, item.note, item.created_at, item.link, item.image.original.url, item.counts.saves.ToString(), item.counts.comments.ToString()});       
    }


    if (obj.page.next != "")
    {
        url = obj.page.next;
    }
    else
    {
        break;
    }

}
 

Tnyrtin

Client
Регистрация
12.05.2015
Сообщения
73
Благодарностей
8
Баллы
8
Но надо правильно прописать условие выхода. Что находится в переменной obj.page.next, если следующей страницы нету?
Я предположил, что там пустая строка; если что-то другое, то блок if else надо переписать.
Должно работать, но я не проверял. Лучше сначала протестировать.

C#:
string url = apiKey;

while (true)
{
    var strBody = ZennoPoster.HttpGet(url, "", "UTF-8", ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly);
    
    RootObject obj = new JavaScriptSerializer().Deserialize<RootObject>(strBody);
    
    //перебираю все элементы в списке и складываю их в таблицу
    foreach(Datum item in obj.data)
    {
        PinsTable.AddRow(new String[]{item.url, item.note, item.created_at, item.link, item.image.original.url, item.counts.saves.ToString(), item.counts.comments.ToString()});      
    }


    if (obj.page.next != "")
    {
        url = obj.page.next;
    }
    else
    {
        break;
    }

}
ответом получил "Выполнение действия CSharp OwnCode Ссылка на объект не указывает на экземпляр объекта."

Что находится в переменной obj.page.next, если следующей страницы нету?
нужно сделать проверку на уникальность obj.page.next. Т.е. после выполнения всех операций это значение начинает повторяться. Нужно сделать проверку на повторяемость значения
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)