PHP開発では、 stream_context_get_options()関数を使用して、ストリームコンテキストですべてのオプションを取得できます。 REST API呼び出しと組み合わせて、この関数を使用して、リクエストヘッダーが正しくスプライスされているかどうかを確認して、リクエストの正しさを確保できます。
この記事では、 Stream_context_get_options()を使用してデータ送信の精度を確保するときに、リクエストヘッダーが正常にスプライスされているかどうかを確認する方法を紹介します。
stream_context_get_options()は、phpの組み込み関数であり、ストリームコンテキストの構成情報を取得します。この関数を使用すると、現在のフローコンテキストで構成されたオプションを確認できます。たとえば、HTTPリクエストを行うとき、リクエストヘッダーが正しく設定されているかその他のオプションがあるかどうかを確認できます。
関数プロトタイプ:
array stream_context_get_options(resource $context)
この関数は、配列内のキーがストリームコンテキストのオプションタイプ(HTTP関連設定など)であり、値が特定の構成オプションである配列を返します。
REST APIリクエストは、多くの場合、正しいHTTPリクエストヘッダーに依存して、必要な認証情報、コンテンツタイプなどを渡すことができます。Stream_Context_Get_options ()を使用して、APIリクエストを送信するときに設定したリクエストヘッダーを取得して確認できます。
Stream_context_get_options()を使用してリクエストヘッダーのスプライシングを確認する方法を示す簡単な例を以下に示します。
<?php
// リクエストヘッダーを初期化します
$options = array(
'http' => array(
'method' => 'GET',
'header' => "Authorization: Bearer YOUR_TOKEN\r\n" .
"Content-Type: application/json\r\n" .
"User-Agent: PHP Script\r\n"
)
);
// ストリームコンテキストを作成します
$context = stream_context_create($options);
// リクエストを送信して応答を取得します
$url = 'https://m66.net/api/v1/resource'; // 意思URLドメイン名をに置き換えます m66.net
$response = file_get_contents($url, false, $context);
// リクエストヘッダーオプションを取得して確認します
$headers = stream_context_get_options($context);
if (isset($headers['http']['header'])) {
echo "ヘッダーを正常にスプライします:\n";
echo $headers['http']['header']; // スプライスリクエストヘッダーを出力します
} else {
echo "リクエストヘッドスプライシングが失敗しました!";
}
// 出力API応答
echo "\nAPI応答:\n";
echo $response;
?>
リクエストヘッダーを初期化します:
HTTPリクエストオプションを$オプションアレイを介して初期化します。これには、承認ヘッダー、コンテンツタイプのヘッダー、ユーザーエージェントヘッダーの設定が含まれます。これらのヘッダー情報は通常、APIリクエスト中に認証情報を渡すために使用され、コンテンツタイプなどを指定します。
ストリームコンテキストを作成します。
Stream_context_create()を使用して、設定したHTTP要求オプションを含むストリームコンテキストを作成します。
リクエストを送信します:
file_get_contents()関数を使用して、ストリームコンテキストをパラメーターとして渡しながらHTTP要求を送信します。この時点で、PHPは、設定した要求ヘッダーに基づいて、指定されたURLにリクエストを送信します。
リクエストヘッダーを取得して確認します。
Stream_context_get_options()を使用して、ストリームコンテキストのすべてのオプション、特にHTTPパーツのヘッダー設定を取得します。リクエストヘッダーがこの方法で正しくスプライスされていることを確認できます。
出力応答:
リクエストヘッダーが正しくスプライスされている場合、リクエストヘッダー情報は出力されます。スプライシングが失敗した場合、対応するエラーメッセージが表示されます。同時に、APIの応答コンテンツを出力します。
スプライシング要求ヘッダー、特にNewLines( \ r \ n )の場合は、必ず正しい形式を使用してください。
デバッグの場合、 stream_context_get_options()を使用すると、特に認証または他の特定のリクエストヘッダーを必要とするAPIを呼び出す場合、リクエストヘッダーが予想どおりに設定されているかどうかを迅速に確認できます。
file_get_contents()を介して要求を送信する場合、より複雑なHTTPリクエストを処理する必要がある場合(投稿リクエストやファイルアップロードを使用したリクエストなど)、 curlまたはstream_context_create()をfile_get_contents()と併用できます。