【问题标题】:How to send URL variables programmatically with response from my PHP endpoint如何通过我的 PHP 端点的响应以编程方式发送 URL 变量
【发布时间】:2012-09-13 15:40:34
【问题描述】:

我在我的网站上设置了一个基本的 API 端点,第 3 方网站将使用它来验证用户在表单中输入的某些信息。

流程如下: 1. 用户在第 3 方网站上。 2.用户在表单中输入信息 3. 信息被发送到我站点的端点。 4. 我的站点检查信息并返回一个 JSON 对象。

从#4 中可以看出,我的 API 当前设置为返回 JSON 对象。检查信息后,会发生这样的事情:

    header('content-type: application/json; charset=utf-8');
    echo json_encode($response);
    exit;

但是,第 3 方站点仅设置为接收 URL 变量。有没有办法以编程方式传回 url 变量?我意识到我理论上可以发送一个新请求,但我不清楚该请求应该去哪里(第 3 方站点的内部工作没有很好的文档记录),所以我更愿意将它作为响应发送。

我希望这是有道理的。如果没有,请发表评论。提前致谢!

【问题讨论】:

  • 需要更多信息。什么是“接收 URL 变量”?
  • @MrSil:他们期望数据来自这样的查询字符串变量:example.com?var1=one&var2=two
  • 所以你需要发回请求。你可以使用 curl/sockets 或者简单的使用 file_get_contents("host/?var1=$var1&...")
  • @MrSil 但我不知道主机是怎样的......我假设host 是一个占位符,而不是一个实际的 url 约定。
  • “我不知道主机怎么样”是什么意思?托管您的 example.com

标签: php api http http-headers query-string


【解决方案1】:

您不能在响应中发送 GET/POST 参数,但在 response body 中,您可以以任何您想要的格式发送您想要的任何内容 - 他们可以使用 curlfile_get_content 并解析它站在他们这边(第 3 方的网站)。

例如(在第三方的网站上):

//setting a call to your server
$opts = array('http' =>
  array(
    'method'  => 'POST',
    'header'  => "Content-Type: text/xml\r\n".
      "Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n",
    'content' => $body,
    'timeout' => 60
  )
);

$context  = stream_context_create($opts);
$url = 'https://'.$https_server;
// Here they call your server
$result = file_get_contents($url, false, $context, -1, 40000);
// Here you'll parse the $result

【讨论】:

  • 我无法控制第 3 方代码。所以我不能用这个方法。但我认为你通过解释我试图做的事情是不可能的(获取或发布变量)来回答我的问题。对吗?
猜你喜欢
  • 2014-02-07
  • 2011-08-31
  • 1970-01-01
  • 2012-01-13
  • 2018-09-14
  • 1970-01-01
  • 2018-12-30
  • 1970-01-01
  • 2018-09-03
相关资源
最近更新 更多