最近接到一个需求,假设有A、B、C 三台主机。现A主机要访问C主机上的一个脚本,并且根据A传递的参数给C主机,同时接受C主机返回来的数据。但是现在A主机不能直接通过url、IP访问C主机,需要借由主机B。主要思路:A主机请求B主机并发送数据给B主机,B主机把接受到的数据再发送给C主机,同时接受C主机返回的数据,最后再把此数据返回给A主机。
具体程序如下:
<?php
//绑定的内网的 url 链接
$intranet_url = ‘http://localhost/test.php‘;
//POST 接收传来的数据
$post_param = $_REQUEST;
//发送数据
$post_data = $post_param;
$return_post = send_post($intranet_url, $post_data);
var_dump($return_post);
return $return_post;
/**提交POST请求**/
function send_post($url, $post_data)
{
$postdata = http_build_query($post_data);
$options = array(
‘http‘ => array(
‘method‘ => ‘POST‘,
‘header‘ => ‘Content-type:application/x-www-form-urlencoded‘,
‘content‘ => $postdata,
‘timeout‘ => 30 // 超时时间(单位:s)
)
);
$context = stream_context_create($options);
try{
$result = file_get_contents($url, false, $context);
return $result;
}
catch(Exception $e)
{
$error = ‘error:连接超时‘;
return $error;
}
}
?>