Отправить запрос POST в пакете R - PullRequest
0 голосов
/ 15 января 2019

Я пытался использовать пакет httr в R для отправки запроса POST

Веб-сайт, которому я пытаюсь отправить запрос POST, делает следующее:

POST /newwebservices/locationverifier.asmx/findLocation2 HTTP/1.1
Host: citizenatlas.dc.gov
Content-Type: application/x-www-form-urlencoded
Content-Length: length
str=string&f=string

где str принимает адрес в Вашингтоне, округ Колумбия, такой как "701 FARADAY PL NE, WASHINGTON, DC 20017", а f принимает формат, запрошенный в этом случае. Я хочу "json"

Iпробовал:

url = "/newwebservices/locationverifier.asmx  HTTP/1.1"
body = list(
"Host" = "citizenatlas.dc.gov",
"Content-Type" = "application/x-www-form-urlencoded",
"Content-Length" =  length,
"str"="3513 S St NW",
"f"="json"
)
httr::POST(url,body, verbose)

Я также пробовал Получить Это то, что они заявляют, чтобы положить в

GET /newwebservices/locationverifier.asmx/findLocation2?    str=string&f=string HTTP/1.1
Host: citizenatlas.dc.gov

или

   GET("http://citizenatlas.dc.gov/newwebservices/locationverifier.asmx/findLocation2?str=3513 S St NW&f=json")

, но ничего не работает.Кстати, у меня не было проблем с выполнением запроса с помощью Mathematica.

Буду признателен за любую помощь.Заранее спасибо.

1 Ответ

0 голосов
/ 16 января 2019

Здесь происходит несколько разных вещей. Ниже работает:

url <- "http://citizenatlas.dc.gov/newwebservices/locationverifier.asmx/findLocation2"
body <- list(str = "3513 S St NW", f = "json")
httr::POST(url, body = body, encode = "json")

Несколько отличий:

  • POST - хост + конечная точка, а не только конечная точка
  • Сведения об ответе (тип содержимого, длина) не включены
  • Кодировка, указанная для тела (согласно документации httr::POST)
  • body и encode названы потому, что они не находятся в позициях из документации, поэтому позиционное сопоставление аргументов не будет работать
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...