如何在 Rest Server API 中 get/set Header?
How to get/set Header in Rest Server API?
我有一个 chriskacerguis Rest 服务器,它像 API 服务器一样监听客户端请求。
根据客户的要求,我想 send/response 仅在 header 中向客户发送一些数据。
my questions are:
我如何首先访问客户端 header?
然后
如何在 Rest Server 中设置 Header?
这是我向 REST SERVER 发送请求的方式:
function request_curl($url = NULL) {
$utc = time();
$post = "id=1&CustomerId=1&amount=2450&operatorName=Jondoe&operator=12";
$header_data = array(
"Content-Type: application/json",
"Accept: application/json",
"X-API-KEY:3ecbcb4e62a00d2bc58080218a4376f24a8079e1",
"X-UTC:" . $utc,
);
$ch = curl_init();
$curlOpts = array(
CURLOPT_URL => 'http://domain.com/customapi/api/clientRequest',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $header_data,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $post,
CURLOPT_HEADER => 1,
);
curl_setopt_array($ch, $curlOpts);
$answer = curl_exec($ch);
// If there was an error, show it
if (curl_error($ch)) {
die(curl_error($ch));
}
curl_close($ch);
echo '<pre>';
print_r($answer);
echo '</pre>';
}
下面是我的 REST SERVER 函数,它监听请求并将响应 header:
public function clientRequest_post() {
// Getting Post Data
$entityBody = file_get_contents('php://input', 'r');
$this->response($entityBody,200);
//getting header data ,no idea
}
可能会尝试 php 函数 getallheaders() ,它将为您获取所有 header 数据。如果要将其转换为数组,请使用 foreach.
所以这将为您提供 header 数据并将其转换为数组
$headers=array();
foreach (getallheaders() as $name => $value) {
$headers[$name] = $value;
}
现在如果你想得到 body 并将其也转换为数组
$entityBody = file_get_contents('php://input', 'r');
parse_str($entityBody , $post_data);
最终函数看起来像这样...
public function clientRequest_post() {
$headers=array();
foreach (getallheaders() as $name => $value) {
$headers[$name] = $value;
}
$entityBody = file_get_contents('php://input', 'r');
parse_str($entityBody , $post_data);
$this->response($entityBody, 200);
}
顺便说一句,我假设 $this->response($entityBody,200);
会为您生成响应。祝你好运
我有一个 chriskacerguis Rest 服务器,它像 API 服务器一样监听客户端请求。
根据客户的要求,我想 send/response 仅在 header 中向客户发送一些数据。
my questions are:
我如何首先访问客户端 header?
然后
如何在 Rest Server 中设置 Header?
这是我向 REST SERVER 发送请求的方式:
function request_curl($url = NULL) {
$utc = time();
$post = "id=1&CustomerId=1&amount=2450&operatorName=Jondoe&operator=12";
$header_data = array(
"Content-Type: application/json",
"Accept: application/json",
"X-API-KEY:3ecbcb4e62a00d2bc58080218a4376f24a8079e1",
"X-UTC:" . $utc,
);
$ch = curl_init();
$curlOpts = array(
CURLOPT_URL => 'http://domain.com/customapi/api/clientRequest',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => $header_data,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $post,
CURLOPT_HEADER => 1,
);
curl_setopt_array($ch, $curlOpts);
$answer = curl_exec($ch);
// If there was an error, show it
if (curl_error($ch)) {
die(curl_error($ch));
}
curl_close($ch);
echo '<pre>';
print_r($answer);
echo '</pre>';
}
下面是我的 REST SERVER 函数,它监听请求并将响应 header:
public function clientRequest_post() {
// Getting Post Data
$entityBody = file_get_contents('php://input', 'r');
$this->response($entityBody,200);
//getting header data ,no idea
}
可能会尝试 php 函数 getallheaders() ,它将为您获取所有 header 数据。如果要将其转换为数组,请使用 foreach.
所以这将为您提供 header 数据并将其转换为数组
$headers=array();
foreach (getallheaders() as $name => $value) {
$headers[$name] = $value;
}
现在如果你想得到 body 并将其也转换为数组
$entityBody = file_get_contents('php://input', 'r');
parse_str($entityBody , $post_data);
最终函数看起来像这样...
public function clientRequest_post() {
$headers=array();
foreach (getallheaders() as $name => $value) {
$headers[$name] = $value;
}
$entityBody = file_get_contents('php://input', 'r');
parse_str($entityBody , $post_data);
$this->response($entityBody, 200);
}
顺便说一句,我假设 $this->response($entityBody,200);
会为您生成响应。祝你好运