【问题标题】:handle API that has redirect response处理具有重定向响应的 API
【发布时间】:2016-08-30 15:35:21
【问题描述】:

我有一个案例,我需要将数据发布到具有重定向响应的 API 端点,我的意思是当我使用几个发布参数点击例如“xxx.com/api/v1/receive”时,它假设重定向到处理 API 提供者提供的身份验证以供进一步访问的页面,然后重定向回我的站点。

在我的代码中,我实现了这样的东西来发布数据

$data = ['key'=>'val'.etc...];
$post_data = http_build_query($data);

// open connection
$ch = curl_init();

// set option
curl_setopt($ch,CURLOPT_URL,$this->dev_url);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
curl_setopt($ch,CURLOPT_FRESH_CONNECT,true);


// execute
$result = curl_exec($ch);

当我使用 html 表单使用常规表单提交并发布一些参数时,它使用重定向的东西运行,就像它假设的那样,但是当我像上面的代码一样发布数据时,它没有响应。是否可以使用 curl 获得类似 html 表单的响应(重定向响应)?

【问题讨论】:

  • 所以当你的表单动作是端点时,脚本按预期执行,但是当使用 CURL 并将动作更改为自身时,脚本没有按预期工作?
  • 还要记得将 CURLOPT_POST 设置为 true
  • 正确。我只是将 CURLOPT_POST 设置为 true,仍然没有响应
  • 尝试将 CURLOPT_RETURNTRANSFER 设置为 true。如果您可以访问 API 端点,您还可以放置 die('QA') 或 return 'QA';作为第一行,为 API 脚本失败提供一些线索

标签: php rest redirect curl


【解决方案1】:
$data = ['key'=>'val'.etc...];

$result = file_get_contents ( "http://yoururl.com", false, stream_context_create ( array (
                    'http' => array (
                            'method' => 'POST',
                            'content' => json_encode ( $data ) 
                    ))));

您可以查看var_dump($result);

【讨论】:

  • 我遇到了这个错误“file_get_contents(): Content-type not specified 假设 application/x-www-form-urlencoded”
猜你喜欢
  • 2018-07-15
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2022-11-25
  • 2016-09-17
  • 2018-09-28
  • 2021-01-06
  • 1970-01-01
相关资源
最近更新 更多