PHP curl процесс в R

Я получил процесс curl followig в php:

$ch = curl_init();
$url = "www.sample.com";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json; charset=utf-8", "Accept:application/json, text/javascript, */*; d=0.2"));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIE, 'auth_tkt=myToken; anotherArg=234');

$result = curl_exec($ch);
curl_close($ch);

Теперь я должен перевести и выполнить это в R. Я попытался со следующим, однако, я получаю статус 403, поэтому я предполагаю, что заголовки или файлы cookie установлены неправильно:

library(httr)
url <- "www.sample.com"res <- GET(url,
add_headers(`Content-Type` = "application/json",
charset="utf-8",
Accept = c("application/json", "text/javascript", "*/*"),
d="0.2"),
set_cookies(auth_tkt="myToken", anotherArg="234")

0

Решение

Это:

httr::GET(
url = "http://httpbin.org/",
httr::set_cookies(
auth_tkt = "myToken",
anotherArg = 234L
),
httr::content_type("application/json; charset=utf-8"),
httr::accept("application/json, text/javascript, */*; d=0.2"),
httr::verbose()
)

является почти то же самое @Alberto опубликовал за исключением того, что он использует некоторые дополнительные httr вспомогательные функции и устанавливает значения правильно. я сделал это verbose() чтобы я мог показать что было отправлено:

-> GET / HTTP/1.1
-> Host: httpbin.org
-> User-Agent: libcurl/7.54.0 r-curl/3.2 httr/1.3.1
-> Accept-Encoding: gzip, deflate
-> Cookie: auth_tkt=myToken;anotherArg=234
-> Content-Type: application/json; charset=utf-8
-> Accept: application/json, text/javascript, */*; d=0.2

Код @ Alberto заканчивается отправкой:

-> GET / HTTP/1.1
-> Host: httpbin.org
-> User-Agent: libcurl/7.54.0 r-curl/3.2 httr/1.3.1
-> Accept-Encoding: gzip, deflate
-> Cookie: auth_tkt=myToken;anotherArg=234
-> Accept: application/json, text/xml, application/xml, */*
-> Content-Type: application/json
-> charset: utf-8
-> Accept1: application/json
-> Accept2: text/javascript
-> Accept3: */*
-> d: 0.2

который не полностью имитирует пример кода PHP.

2

Другие решения

У вас есть опечатка в url переменная в 3-й строке, вот правильный код:

library(httr)
url <- "www.sample.com"res <- GET(url,
add_headers(`Content-Type` = "application/json",
charset="utf-8",
Accept = c("application/json", "text/javascript", "*/*"),
d="0.2"),
set_cookies(auth_tkt="myToken", anotherArg="234")
1

По вопросам рекламы [email protected]