NewsApi возвращает totalResults = 20 даже после указания pageSize = 100 - PullRequest
0 голосов
/ 29 сентября 2018

Я использую News API в приложении для Android.

Я пытаюсь получить больше результатов (новостей) с сервера, но он всегда возвращает только 20 результатов, которые былиустановить по умолчанию, как указано в документации здесь .

Вот мой код:

class DownloadNews extends AsyncTask<String, Void, String> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
        protected String doInBackground(String... args) {
            String xml = "";

            String urlParameters = "";
            xml = Function.excuteGet("https://newsapi.org/v2/top-headlines?country=in&pageSize=100&apiKey=******************", urlParameters);
            return xml;
        }
        @Override
        protected void onPostExecute(final String xml) {

            if (xml != null) {
                if (xml.length() > 10) { // Just checking if not empty

                    Log.d("xml", xml);

                } else {

                }
            } else {

            }
        }

    }

Я указал pageSize аргумент как 100, но все же яполучаю только 20 totalResults:

09-29 22:29:22.241 10275-10275/com.abc.xyz D/xml: {"status":"ok","totalResults":20,"articles":[]}

Что здесь не так?

Ответы [ 5 ]

0 голосов
/ 07 апреля 2019

Вам лучше использовать ContextualWeb NewsAPI.У этого есть лучшие результаты и намного более популярный.Также вы не ограничены 20 результатами.Их NewsAPI является самым популярным API на рынке RapidAPI.

Код можно найти здесь: https://github.com/roikra/newsapi

Здесь можно сгенерировать APIKey: https://rapidapi.com/contextualwebsearch/api/web-search

Вот код:

public static void Test()
{
    //Required Package: Unirest-API (https://www.nuget.org/packages/Unirest-API/)

    //Replace the following string value with your valid X-RapidAPI-Key.
    string Your_X_RapidAPI_Key = "xxxxxxxxxxxxxxxxxxxxx";

    //The query parameters: (update according to your search query)
    string q = "Taylor%20Swift"; //the search query
    int pageNumber = 1; //the number of requested page
    int pageSize = 10; //the size of a page
    bool autoCorrect = true; //autoCorrectspelling
    bool safeSearch = false; //filter results for adult content

    //Perform the web request and get the response
    var response = Unirest.get(string.Format("https://contextualwebsearch-websearch-v1.p.rapidapi.com/api/Search/NewsSearchAPI?q={0}&pageNumber={1}&pageSize={2}&autoCorrect={3}&safeSearch={4}", q, pageNumber, pageSize, autoCorrect, safeSearch))
    .header("X-RapidAPI-Key", Your_X_RapidAPI_Key)
    .asJson<string>();

    //Get the ResponseBody as a JSON
    dynamic jsonBody = JsonConvert.DeserializeObject(response.Body);

    //Parse the results

    //Get the numer of items returned
    int totalCount = (int)jsonBody["totalCount"];

    //Get the list of most frequent searches related to the input search query
    List<string> relatedSearch = JsonConvert.DeserializeObject<List<string>>(jsonBody["relatedSearch"].ToString());

    //Go over each resulting item
    foreach (var webPage in jsonBody["value"])
    {
        //Get the web page metadata
        string url = webPage["url"].ToString();
        string title = webPage["title"].ToString();
        string description = webPage["description"].ToString();
        string keywords = webPage["keywords"].ToString();
        string provider = webPage["provider"]["name"].ToString();
        DateTime datePublished = DateTime.Parse(webPage["datePublished"].ToString());

        //Get the web page image (if exists)
        string imageUrl = webPage["image"]["url"].ToString(); 
        int imageHeight = (int)webPage["image"]["height"]; 
        int imageWidth = (int)webPage["image"]["width"]; 

        //Get the web page image thumbail (if exists)
        string thumbnail = webPage["image"]["thumbnail"].ToString(); 
        int thumbnailHeight = (int)webPage["image"]["thumbnailHeight"]; 
        int thumbnailidth = (int)webPage["image"]["thumbnailWidth"]; 

        //An example: Output the webpage url, title and published date:
        Console.WriteLine(string.Format("Url: {0}. Title: {1}. Published Date:{2}.",
        url,
        title,
        datePublished));
    }
}
0 голосов
/ 10 января 2019

Это ограничение от NewAPI.Я получил это после установки

pageSize=100
&page=100

Это результат.

{'status': 'error', 'code': 'maximumResultsReached', 'message': 'You have requested too many results. Developer accounts are limited to a max of 100 results deep. You are trying to request results 9900 to 10000. Please upgrade to a paid plan if you need more results.'}
Error reading

Это не проблема программирования.

0 голосов
/ 01 октября 2018

Конечная точка / top-headlines возвращает не более 20 статей.Когда статья больше не считается «верхним заголовком», она отбрасывается с этой конечной точки.Если вам нужно получить более 20 статей, вы можете использовать конечную точку / everything , которая включает все верхние заголовки и любые другие небольшие статьи.

0 голосов
/ 01 октября 2018

Это обновление, которое я получил от команды NewsApi

pageSize не является допустимым параметром в конечной точке верхнего заголовка.Работает только на конечной точке все

enter image description here

0 голосов
/ 29 сентября 2018

Это проблема с API.Похоже, есть только 20 новостных сообщений для ' Индия ' (если ' в ' означает это) и что 20 Похоже, что он был жестко запрограммирован или общее количество элементов возвращается независимо от параметра pageSize .

В Почтальон , я пытался с pageSize=100, какты сделал и все еще получил "totalResults": 20.Я снова попробовал pageSize=10 и, что интересно, totalResults осталось 20, но вернул 10 статей, как указано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...