Я делаю первые попытки вызова API. Я успешно подключился через пакеты httr & jsonlite с помощью описанного здесь метода: https://www.programmableweb.com/news/how-to-access-any-restful-api-using-r-language/how-to/2017/07/21?page=2
Вызов API ниже:
get_table <- GET(call2, authenticate(username,password,type = "basic"))
get_table
Вот мой вывод на консоль с указанием статуса 200 иТип содержимого gzip:
> get_table
Response [---intentionally_hiding_URL_for_privacy.com----]
Date: 2019-10-28 17:33
Status: 200
Content-Type: application/gzip
Size: 607 kB
<BINARY BODY>
Проблема заключается в том, что я запускаю второй шаг к своему вызову:
get_tabledeserial <- content(get_table, "text")
get_tabledeserial
Консоль возвращает следующее:
> get_tabledeserial <- content(get_table, "text")
No encoding supplied: defaulting to UTF-8.
>
> get_tabledeserial
[1] NA
IПолагаю, что это потому, что файл был заархивирован, когда я его вызываю, поэтому после десериализации его с помощью функции содержимого я получаю NA, поскольку таблицу все еще нужно разархивировать.
Я испробовал несколько способов разархивирования, один из которых был от Дирка ЭддельБеттеля из ответа на другой поток:
- Создайте темп. имя файла (например, tempfile ())
- Используйте download.file () для извлечения файла в temp. file
- Используйте unz (), чтобы извлечь целевой файл из temp. file
- Удалить временный файл с помощью unlink ()
При форматировании для моего собственного вызова метод Дирка выдает эту ошибку:
> temp <- tempfile()
> download.file("http://URL_hidden_for_privacy",temp)
downloaded 0 bytes
Error in download.file("http://URL_hidden_for_privacy", :
cannot download all files
In addition: Warning message:
In download.file("http://URL_hidden_for_privacy", :
URL 'http://URL_hidden_for_privacy': status was '404 Not Found'
> data <- read.table(unz(temp, "A_RESOURCE_RESULT_VW.gz"))
Error in open.connection(file, "rt") : cannot open the connection
In addition: Warning message:
In open.connection(file, "rt") :
cannot open zip file '/tmp/RtmpZBiDaG/file1f2f49eb5224'
> unlink(temp)
Я незнаете, почему распаковка не работает, но я подозреваю, что это связано с форматом вызова API?
В любом случае, на базовом уровне я хотел бы знать, почему я успешно завершаю вызов APIно у меня нет таблицы для десериализации, и если это происходит из-за типа заархивированного файла, как я могу его распаковать?
Заранее спасибо!