Как преобразовать содержимое HTTP-запроса в UTF-8 в R? - PullRequest
0 голосов
/ 05 мая 2020

Хотел бы получить доступ к содержимому текстового документа из API с помощью R. Проблемы с чтением содержимого после нескольких попыток. Думаю, мне что-то не хватает ....

library(httr)
require(jsonlite)
library(tidyverse)
library(reqres)

# 
result <- POST(url,
               body = request_body_json,
               add_headers(.headers = c("Content-Type"="application/json")),
               authenticate(user, passwd))

> result
Response [http://myServer/theservice/v0001/restun/GetDocumentStreamRaw]
  Date: 2020-05-05 08:43
  Status: 200
  Content-Type: application/octet-stream
  Size: 11.4 kB
<BINARY BODY>

Попытки получить контент:

> content(result) # same as content(result, "raw",encoding = "UTF-8")
   [1] 50 4b 03 04 14 00 06 00 08 00 00 00 21 00 df a4 d2 6c 5a 01 00 00 20 05 00 00 13 00 08 02 5b 43
  [33] 6f 6e 74 65 6e 74 5f 54 79 70 65 73 5d 2e 78 6d 6c 20 a2 04 02 28 a0 00 02 00 00 00 00 00 00 00
  [65] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  [97] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [129] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [161] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [193] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [225] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [257] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [289] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [321] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [353] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [385] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [417] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [449] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [481] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [513] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [545] 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b4 94 cb 6e c2 30 10
 [577] 45 f7 95 fa 0f 91 b7 55 62 e8 a2 aa 2a 02 8b 3e 96 2d 52 e9 07 18 7b 02 56 fd 92 c7 bc fe be 13
 [609] 02 51 55 01 91 0a 6c 22 25 33 f7 de 33 56 c6 83 d1 da 9a 6c 09 11 b5 77 25 eb 17 3d 96 81 93 5e
 [641] 69 37 2b d9 d7 e4 2d 7f 64 19 26 e1 94 30 de 41 c9 36 80 6c 34 bc bd 19 4c 36 01 30 23 b5 c3 92
 [673] cd 53 0a 4f 9c a3 9c 83 15 58 f8 00 8e 2a 95 8f 56 24 7a 8d 33 1e 84 fc 16 33 e0 f7 bd de 03 97
 [705] de 25 70 29 4f b5 07 1b 0e 5e a0 12 0b 93 b2 d7 35 7d 6e 48 22 18 64 d9 73 d3 58 67 95 4c 84 60
 [737] b4 14 89 ea 7c e9 d4 9f 94 7c 97 50 90 72 db 83 73 1d f0 8e 1a 18 3f 98 50 57 8e 07 ec 74 1f 74
 [769] 34 51 2b c8 c6 22 a6 77 61 a9 8b af 7c 54 5c 79 b9 b0 a4 2c 4e db 1c e0 f4 55 a5 25 b4 fa da 2d
 [801] 44 2f 01 91 ce dc 9a a2 ad 58 a1 dd 9e ff 28 07 a6 8d 01 bc 3c 45 e3 db 1d 0f 29 91 e0 1a 00 3b
 [833] e7 4e 84 15 4c 3f af 46 f1 cb bc 13 a4 a2 dc 89 98 1a b8 3c 46 6b dd 09 91 68 03 a1 79 f6 cf e6
 [865] d8 da 9c 8a a4 ce 71 f4 01 69 a3 e3 3f c6 de af 6c ad ce 69 e0 00 31 e9 d3 7f 5d 9b 48 d6 67 cf
 [897] 07 f5 6d a0 40 1d c8 e6 db fb 6d f8 03 00 00 ff ff 03 00 50 4b 03 04 14 00 06 00 08 00 00 00 21
 [929] 00 1e 91 1a b7 ef 00 00 00 4e 02 00 00 0b 00 08 02 5f 72 65 6c 73 2f 2e 72 65 6c 73 20 a2 04 02
 [961] 28 a0 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 [993] 00 00 00 00 00 00 00 00
 [ reached getOption("max.print") -- omitted 10426 entries ]
> content(result, "parsed",encoding = "UTF-8")
Error: No automatic parser available for application/octet-stream.

Другие попытки:

> my_content <- result$content
> readBin(gzcon(rawConnection(my_content)), what = "character")
[1] "PK\003\004\024"
> readChar(content(result), nchars=length(content(result)))
Error in readChar(content(result), nchars = length(content(result))) : 
  embedded nul in string: 'PK\003\004\024\0\006\0\b\0\0\0!\0ߤÒlZ\001\0\0 \005\0\0\023\0\b\002[Content_Types].xml ¢\004\002( \0\002\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\

Вы можете получить доступ к ссылке content(result) здесь : https://raw.githubusercontent.com/brainy749/testdata/master/result_content.txt

Ожидаемое содержание, удобочитаемое человеком это Test OCR via API.

Есть помощь? Большое спасибо.

1 Ответ

0 голосов
/ 05 мая 2020

Поскольку вы не предоставляете воспроизводимый пример, я дико гадаю, но, возможно, это поможет:

library(httr)

res = POST(url,
           body = request_body_json,
           add_headers(.headers = c("Content-Type"="application/json")),
           authenticate(user, passwd))
tmp = tempfile()
writeBin(res$content, tmp)
# maybe unzip here?
read_docx(tmp) # what function do you use to read the word file
# OR directly
read_docx(res$content)
  • Можете ли вы предоставить рабочий URL?
  • Как вы хотите прочитать содержимое файла?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...