通过PHP路由HTTP(API)调用
有没有办法通过PHP“路由”HTTP(API)调用?基本上我有3个系统。系统A可以到达系统B,系统B可以到达系统C。但是,系统A无法到达系统C。是否有一个简单的方法将我的API调用路由到系统B,它可以充当中间人并与系统C通信,然后B可以用调用结果响应A?您尝试创建的是代理。这可以通过PHP很好地完成。以下代码是代理的一个非常简单的实现,读取POST数据,将其提交到不同的URL,并将结果返回给原始客户端:通过PHP路由HTTP(API)调用,php,http-proxy,Php,Http Proxy,有没有办法通过PHP“路由”HTTP(API)调用?基本上我有3个系统。系统A可以到达系统B,系统B可以到达系统C。但是,系统A无法到达系统C。是否有一个简单的方法将我的API调用路由到系统B,它可以充当中间人并与系统C通信,然后B可以用调用结果响应A?您尝试创建的是代理。这可以通过PHP很好地完成。以下代码是代理的一个非常简单的实现,读取POST数据,将其提交到不同的URL,并将结果返回给原始客户端: $targetUrl = 'https://www.example.com/api/foob
$targetUrl = 'https://www.example.com/api/foobar';
$headers = [];
$postData = file_get_contents('php://input');
foreach ($_SERVER as $key => $value)
{
if (stripos($key, "HTTP_") === 0 && stripos($key, "Host") === false)
{
$key = str_replace(" ", "-", ucwords(strtolower(str_replace("_"," ",substr($key,5)))));
$headers[] = "$key: $value";
}
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $targetUrl);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_VERBOSE, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_MAXREDIRS, 5);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postData);
$response = curl_exec($curl);
if (curl_errno($curl))
throw new \Exception(sprintf("Connection error %s: %s", curl_errno($curl), curl_error($curl)));
curl_close($curl);
echo gzdecode($response);
这只是一个示例,它进行了几个假设(有效负载是POST数据,响应是gzip,等等)
您可以根据自己的需要调整代码,或者查看各种更高级的基于PHP的代理实现,例如…您的尝试看起来像…?