2017-09-28 4 views
0

私は既存のPHPスクリプトを持っています。これは本質的にそれぞれ異なるサーバー上の2つのデータベースに接続し、それぞれに対していくつかのMySQLクエリを実行します。最終的な結果は、JSONファイルに前記結果を書き込むために使用されるデータ配列に格納されます。JSONアップロードのためにcURLでPOSTリクエストをPHPスクリプトに変更する

これは完全に機能します。データはmysqlテーブルに正しく挿入され、JSONファイルはまさにそのとおりになります。

しかし、スクリプトの最後にブロックを追加して、私たちのアフィリエイトのAPIの1つにPOSTリクエストを送り、そこに情報をアップロードする必要があります。このJSONファイルを現在手動でapiインスタンスにアップロードしていますが、このスクリプトが実行されたときに手動でデータを送信するのではなく、サーバーがPOSTリクエストで使用するための設定データがあります。

主なことは、私はそれについてどうやってどうやって行くのか正確にはわかりません。私はこれを行うためのコードで始めましたが、私はcURLに精通していないので、PHPでこれを構造化する最良の方法はわかりません。ここで

アフィリエイトはcurlコマンドライン構文で私を与えた例である:

curl \ 
-H "Authorization: Token AUTH_TOKEN" \ 
-H "Content-Type: CONTENT_TYPE" \ 
-X POST \ 
-d '[{"email": "[email protected]", "date": "8/16/2016", "calls": "3"}]' 
\ 
https://endpoint/api/v1/data/DATA_TYPE/ 

私は私の認証トークンを持って、自分のエンドポイントURLと私のコンテンツタイプは、以下の私のコードで見ることができるJSON、です。また、私は上記のボディの例の代わりに配列を持っています。

とここに私のコードの患部だ:

//new array specifically for the final JSON file 
$content2 = []; 

//creating array for new fetch since it now has the updated extension IDs 
while ($d2 = mysqli_fetch_array($data2, MYSQLI_ASSOC)) { 

    // Store the current row 
    $content2[] = $d2; 

} 


// Store it all into our final JSON file 
file_put_contents('ambitionLog.json', json_encode($content2, JSON_PRETTY_PRINT)); 


//Beginning code to upload to Ambition API via POST 

$url = 'endpoint here'; 

//Initiate CURL 
$ch = curl_init($url); 

//JSON data 
$jsonDataEncodeUpload = json_encode($content2, JSON_PRETTY_PRINT); 

//POST via CURL 
curl_setopt($ch, CURLOPT_POST, 1); 

//attach JSON to post fields 
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncodeUpload); 

//set content type 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 

//execuate request 
$postResult = curl_exec($ch); 

だから、私が言ったように、ファイルやデータについて何も変更する必要がない、私はちょうどこのcURLのセクションでは、既存のアレイを取る持っている必要がありますそれはJSONファイルに書き込まれ、投稿を介してAPIにアップロードされます。私はちょうどコマンドラインの例をカールに一致するための私のPHP構文を作るのに役立つ必要があります。

ありがとうございました。

答えて

1

file_get_contents(http://en.php.net/file_get_contents)で試したことがありますか?

$postdata = http_build_query(
    array(
     'var1' => 'some content', 
     'var2' => 'doh' 
    ) 
); 

$opts = array('http' => 
    array(
     'method' => 'POST', 
     'header' => 'Content-type: application/x-www-form-urlencoded', 
     'content' => $postdata 
    ) 
); 

$context = stream_context_create($opts); 

$result = file_get_contents('http://example.com/submit.php', false, $context); 

私はここでHow to post data in PHP using file_get_contents?

1

は、コードの例を働いているのstackoverflowの答えを発見しました。 $ ERRをチェックすると役立つかもしれません。

 $ch = curl_init($url); 
     curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST('data')); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type:application/json']); 

     $result = curl_exec($ch); 
     $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     $err = curl_error($ch); 
     curl_close($ch); 
関連する問題