PHPカールリクエストAPI
P粉311089279
P粉311089279 2023-08-13 18:12:22
0
1
332
<p>JavaScript を使用して API を呼び出す関数がありますが、正常に動作します。</p> <p><br /></p> <pre class="brush:js;toolbar:false;">var headers = { 権限: 「ベアラ」 MY_ACCESS_TOKEN }; var requestParams = { メソッド: "POST"、 contentType: "アプリケーション/json", ヘッダー: ヘッダー、 ペイロード: JSON.stringify({ query: 'query {adSet(id: "' MY_ADSET_ID '") {insights(timeRange: {from: "2023-08-01T00:00:00Z", until: "2023-08-10T23:59:59Z"}timeIncrement) : DAILY) {タイムスタンプ レポート {インプレッション コンバージョン数 offerwallImpressions offerwallAverageRank 支出}}}}' }) var 応答 = UrlFetchApp.fetch(MY_API_ENDPOINT, requestParams); var data = JSON.parse(response);</pre> <p><br /></p> <p>これを PHP に変換しようとすると、API から空の応答が返されます。私が何を間違えたのでしょうか? </p><p> my_curl() を使用して API から $MY_ACCESS_TOKEN を取得すると、正常に動作することに注意してください。 </p> <pre class="brush:php;toolbar:false;">$postdata = json_encode('query: query {adSet(id: "' . $MY_ADSET_ID . '") {insights(timeRange: {from: "2023 -08-01T00:00:00Z"、まで: "2023-08-10T23:59:59Z"} timeIncrement: DAILY) {タイムスタンプ レポート {インプレッション コンバージョン数 offerwallImpressions offerwallAverageRank 支出}}}}'); $エンドポイント = $MY_API_ENDPOINT; $headers = 配列 ( "コンテンツ タイプ: application/json", "認可: Bearer " . $MY_ACCESS_TOKEN, $postdata ); $data = my_curl ($endpoint, $headers); var_dump ($data); function my_curl ($endpoint, $headers) { $ch =curl_init(); curl_setopt ($ch、CURLOPT_URL、$endpoint); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt ($ch、CURLOPT_HTTPHEADER、$headers); curl_setopt ($ch、CURLOPT_HEADER、false); curl_setopt ($ch、CURLOPT_RETURNTRANSFER、true); $server_output =curl_exec($ch); カール_クローズ ($ch); $json = json_decode ($server_output, true); 戻り値 ($json); } </pre> <p><br /></p>
P粉311089279
P粉311089279

全員に返信(1)
P粉513318114

json_encode を使用する場合は、文字列ではなく、JSON にエンコードされる連想配列またはオブジェクトを指定する必要があります。あなたの場合、文字列を提供し、$headers 配列内のヘッダーと投稿データを混合しています。欠落していた CURLOPT_POSTFIELDS オプションを追加して、cURL リクエストに JSON エンコードされた投稿データを含め、API がクエリを正しく受信できるようにしました。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート