問題下記の実行機能でfile_get_contentsを使用してGETが送信されているようです。私の人生のために、私は理由を理解することができません。 POSTを使ってPostmanでapiサーバーをテストしたところ正しく動作しています。.phpサーバーにPOSTを送信しない(代わりにGETが送信される)
最初の関数は、サーバーに送信されるリクエストを渡すために使用されます。 2番目の関数は、form_handler.phpファイルにあり、execute()を介してサーバーに送信するデータを作成します。
api_handler.php
<?php
function execute($command, $context = NULL)
{
$url_scheme = "http://";
if (isset($_SERVER['HTTPS']))
{
$url_scheme = "https://";
}
$url_host = $_SERVER['HTTP_HOST'];
$url_api = "/SkedApi/";
$url = $url_scheme.$url_host.$url_api.$command;
echo $url . "<br/>";
var_dump($context);
var_dump(headers_list());
$response = file_get_contents($url, false, $context);
var_dump(headers_list());
echo $response;
if ($response)
{
$output = json_decode($response, true);
}
else
{
$output = "error";
}
return $output;
}
?>
users_handler.php私のApacheのアクセスファイルから
$test = array ('foo' => 'bar', 'bar' => 'baz');
$postdata = http_build_query($test);
echo $postdata;
$opts = array (
'http' => array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
. "Content-Length: " . strlen($postdata) . "\r\n",
'content' => $postdata
));
var_dump($opts);
$context = stream_context_create($opts);
print_r($context);
$result = execute("Users", $context);
if ($result)
{
echo "YES</br>";
}
:
::1 - - [04/Jul/2017:16:02:00 -0400] "POST /SkedApi/Users HTTP/1.0" 301 239
::1 - - [04/Jul/2017:16:02:00 -0400] "GET /SkedApi/Users/ HTTP/1.0" 200 196
::1 - - [04/Jul/2017:16:02:00 -0400] "POST /SkedAvailability/users_handler.php HTTP/1.1" 200 2688
免責事項:すべてのvar_dumpsについては申し訳ありません。
の可能性のある重複した[Apacheの301リダイレクトとポストデータを保存](https://stackoverflow.com/questions/13628831/apache-301-redirect-and-preserving-post-data)それは働いた – vhu