我正在尝试创建一个Web服务,它接受许多数组(double类型)并返回每个数组的平均值。
为了开始,我编写了一个PHP脚本,它使用HTTP GET
方法检索数组并计算其均值,并以JSON格式将其返回到响应中:
<?php
header("Content-Type:application/json");
if(!empty($_GET['array'])) {
//calculate mean of each array and send results
$array = $_GET['array'];
$mean = array_sum($array)/count($array);
respond(200,"OK",$mean);
} else {
//invalid request
respond(400,"Invalid Request",NULL);
}
function respond($status,$message,$data) {
header("HTTP/1.1 $status $message");
$response['status']=$status;
$response['message']=$message;
$response['data']=$data;
$json_response=json_encode($response);
echo $json_response;
}
?>
但是,我很快意识到,对于一个大型数组(例如,15000个值),我用于传递值的查询字符串将变得如此之大以至于不切实际,如果它甚至可行(我已经读过许多系统放置了一个URL长度限制~2000个字符)。所以,我正在寻找一种不同的方式将数据传递给我的服务,这种方式不会受到限制。阵列将由客户端程序生成。我正在为服务器使用最新的XAMPP堆栈。
答案 0 :(得分:1)
对于你所谈论的数据,你是对的,GET不是发送它的合适方式。使用POST。
答案 1 :(得分:1)
您可以使用POST
代替GET
。这样做的方式取决于客户的语言。例如,使用jQuery:
$.post('http://yourserver.com', yourArray, function (data, status) {
//handle the response of the server
});
答案 2 :(得分:0)
我假设您可以控制客户端程序,在这种情况下,将客户端更改为使用HTTP Request,并将请求内容添加到正文中。
如果您无法控制客户端程序,那么您就不走运了。如果客户端在$ _GET中发送请求,则必须以这种方式接收请求。