r - 如何将 Postman 的 POST 请求转换为 R 中的 httr:POST
问题描述
我想向 facebook.com.api.graphql 页面发送 POST 请求并接收包含事件数据的响应。我使用 Postman 管理向https://www.facebook.com/api/graphql发送 POST 请求,并在正文表单数据中使用以下键和值:
关键:价值
变量:{"pageID":"209194109147358","count":10}
doc_id:2455863461165494
回复:
{
"data": {
"page": {
"upcoming_events": {
"edges": [
{
"is_hidden_on_profile_calendar": false,
"is_added_to_profile_calendar": false,
"node": {
"id": "2416302635352362",
"startTimestampForDisplay": 1589817600,
"time_range": {
"start": "2020-05-18T09:00:00-0700"
},
"timezone": "America/Los_Angeles",
"happensOnSingleDay": false,
"childEvents": {
"count": 0
},
"is_event_draft": false,
"scheduled_publish_timestamp": 0,
"shortTimeLabel": "18. maj - 22. maj",
"shortDateLabel": "Man. 18. maj",
"suggested_event_context_sentence": {
"text": "15 g\u00e6ster"
},
"event_place": {
"__typename": "FreeformPlace",
"contextual_name": "Minneapolis Convention Center",
"id": "2700549666678444"
},
"is_canceled": false,
"imported_source_name": null,
"preassigned_discount_note": null,
"name": "DrupalCon Minneapolis",
"has_child_events": false,
"event_buy_ticket_url": null,
"can_viewer_purchase_onsite_tickets": false,
"event_viewer_capability": {
"is_viewer_admin_no_business_permissions": false,
"can_viewer_edit": false,
"can_viewer_share": false,
"can_viewer_create_repeat_event": false,
"canViewerWatch": false
},
"tickets_type": "ONSITE_TICKET",
"canViewerJoin": false,
"isPast": false,
"connectionStyle": "INTERESTED",
"eventID": "2416302635352362",
"watchStatus": "UNWATCHED",
"canJoin": false,
"__typename": "Event"
},
"cursor": "AQHR-CDTanvfocAXPrNpthiQPd38IxkmIM-X8dsCgvNaS-5GgVPPY1r4B2-G4i64oqoR5V7uQ__B-uZKHzTyd8g5wg"
}
],
"page_info": {
"has_next_page": false,
"end_cursor": "AQHRGvYb3Bp1vBnmF4aHTUuT-FsPomUGSber11DP0LlfpANZ4-hclA6lhKINQ6Av31TbDFGi0YWTQSsiU4Clvggu8A"
}
},
"id": "209194109147358",
"viewer_profile_permissions": [
],
"admin_info": null
}
},
"extensions": {
"is_final": true,
"dtsg_token": null
}
}
我更喜欢在 R 中处理收集的数据,因此想使用 httr:POST() 而不是 Postman 发送 POST 请求。到目前为止我的尝试:
url <- "https://www.facebook.com/api/graphql"
params <- list()
params$variables <- '[{"page_id":"209194109147358", "count":"10"}]'
params$doc_id <- "2455863461165494"
r <- httr::POST(url,body = params, encode = "json")
r
给我以下响应(截断)
Response [https://www.facebook.com/unsupportedbrowser]
Date: 2020-02-10 14:31
Status: 200
Content-Type: text/html; charset="utf-8"
Size: 58.4 kB
<!DOCTYPE html>
<html lang="da" id="facebook" class="no_js">
<head><meta charset="utf-8" /><meta name="referrer" content="default" id="meta_referrer" /><script>window._cstart=+new Date();</script><sc...
<link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v3/ym/l/0,cross/h4AfnhSpX0c.css?_nc_x=Ij3Wp8lg5Kz" data-...
<link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v3/yw/l/0,cross/6oJnmlkR2c_.css?_nc_x=Ij3Wp8lg5Kz" data-...
<link type="text/css" rel="stylesheet" href="https://static.xx.fbcdn.net/rsrc.php/v3/yD/l/0,cross/tI6W6dcWoG6.css?_nc_x=Ij3Wp8lg5Kz" data-...
<script src="https://static.xx.fbcdn.net/rsrc.php/v3/y8/r/6HlB7NWcMJY.js?_nc_x=Ij3Wp8lg5Kz" data-bootloader-hash="J598A"></script>
<script>requireLazy(["gkx"],function(gkx){gkx.add({"676837":{"result":false,"hash":"AT6VREokr3BzfdNj"},"676940":{"result":false,"hash":"AT...
<script>requireLazy(["Bootloader"],function(Bootloader){Bootloader.setResourceMap({"02wPs":{"type":"js","src":"https:\/\/static.xx.fbcdn.n...
<script>requireLazy(["InitialJSLoader"], function(InitialJSLoader) {InitialJSLoader.loadOnDOMContentReady(["SkivO","Gld+B","02wPs","MzCre"...
...
R/httr 中的响应与我从 Postman 得到的不同。我是否错误地设置了参数,或者是否有其他原因导致它在 Postman 中有效,但在 R 中无效?
任何帮助深表感谢。
解决方案
推荐阅读
- sql - SQL/mariadb 使用 IN() 以相同顺序在多个列上进行选择
- unity3d - Unity Assets 不会与玩家发生碰撞,但立方体等会
- android-studio - Toast 消息未在 Android Studio 中显示
- pre-commit.com - 有什么方法可以从钩子中获取用户输入?
- nestjs - 将参数放入 @Entity() 有什么作用?
- c# - 在具体类型是另一个泛型的情况下,具体实现工厂/类组合
- react-native - react-native-map-clustering:选择更改时的缓慢 UI 渲染/过渡
- facebook - 已授予应用权限但无法生成令牌
- java - 在 Android Studio 中动态设置按钮的约束
- python - 如何将凌乱的构建文件夹变成 exe?