我是一个新手程序员,这是我第一次使用PHP和cURL。我正在进行一个 API 调用,我已经为其设置了一个 cURL 请求,让我返回一个 JSON 对象。
我现在要做的是将 cURL 调用设置为循环遍历一个包含多个 $payer_id 的 $payers 数组,我想一次发出和单个请求,打印出一个PRETTY_PRINT JSON 对象,然后从 $payers 数组中发出下一个 $payer_id 的下一个请求。
这是我设置的代码,显然出于安全目的,信息和 api url 是假的,但这是我现在使用的结构。就像我之前提到的,如果你删除代码的foreach部分并手动输入$payer_id号到我拥有的代码中,它会起作用并返回我想要的JSON对象......但我希望能够设置代码以使用$payers数组并为我打印出 JSON 对象。
任何帮助,指导将不胜感激。谢谢!
<?php
/* API url*/
$url = 'https://testapi.com/cov/all.json';
$payers = array("00002", "00112");
/* Assign parameter values here */
foreach ($payers as $payer) {
$api_key = '1111122222233333';
$payer_id = echo "$payer";
$provider_first_name = 'laura';
$provider_last_name = 'brown';
$provider_npi = '444445555';
$member_first_name = 'billy';
$member_last_name = 'bob';
$dependent_ssn = '111-22-3333';
$member_dob = '1988-11-11';
/* $_GET Parameters to Send */
$params = array(
'api_key' => $api_key,
'payer_id' => $payer_id,
'provider_first_name' => $provider_first_name,
'provider_last_name' => $provider_last_name,
'provider_npi' => $provider_npi,
'member_first_name' => $member_first_name,
'member_last_name' => $member_last_name,
'dependent_ssn' => $dependent_ssn,
'member_dob' => $member_dob
);
/* Update URL to container Query String of Paramaters */
$url .= '?' . http_build_query($params);
/* cURL Resource */
$ch = curl_init();
/* Set URL */
curl_setopt($ch, CURLOPT_URL, $url);
/* Tell cURL to return the output */
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
/* Execute cURL, Return Data */
$curl_response = curl_exec($ch);
curl_close($ch);
$decoded = json_decode($curl_response, true);
echo '<pre>';
echo json_encode($decoded, JSON_PRETTY_PRINT);
echo '</pre>';
}
?>
正如我在上面的评论中指出的那样,变量$payer
的声明中有一个小错误 - 回声是有问题的。
此外,我认为您应该能够为数组中的各种付款人重复使用 curl 句柄 - 在循环外声明并在每次迭代时为新 url 分配参数。
[ 从 curl.haxx.se 下载cacert.pem ]
<?php
/* API url*/
$baseurl = 'https://testapi.com/cov/all.json';
$payers = array("00002", "00112");
$data=array();
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
/* when ever I have to use curl to an ssl host I always include these options */
curl_setopt( $ch, CURLOPT_USERAGENT, 'Mozilla-whatever-ua-string' );
curl_setopt( $ch, CURLOPT_CAINFO, realpath('c:/wwwroot/cacert.pem') );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 2 );
/* Assign parameter values here */
foreach( $payers as $payer ) {
$api_key = '1111122222233333';
$payer_id = $payer;
$provider_first_name = 'laura';
$provider_last_name = 'brown';
$provider_npi = '444445555';
$member_first_name = 'billy';
$member_last_name = 'bob';
$dependent_ssn = '111-22-3333';
$member_dob = '1988-11-11';
/* $_GET Parameters to Send */
$params = array(
'api_key' => $api_key,
'payer_id' => $payer_id,
'provider_first_name' => $provider_first_name,
'provider_last_name' => $provider_last_name,
'provider_npi' => $provider_npi,
'member_first_name' => $member_first_name,
'member_last_name' => $member_last_name,
'dependent_ssn' => $dependent_ssn,
'member_dob' => $member_dob
);
/* Update URL to container Query String of Paramaters */
$url = $baseurl . '?' . http_build_query($params);
curl_setopt( $ch, CURLOPT_URL, $url );
$curl_response = curl_exec( $ch );
$decoded = json_decode($curl_response, true);
/* store all responses for later consumption */
$data[]=$curl_response;
/* for debug, show responses */
echo '<pre>',json_encode( $decoded, JSON_PRETTY_PRINT ),'</pre>';
}
curl_close($ch);
if( !empty( $data ) ) print_r( $data );
?>
/* output from print_r($data) */
Array
(
[0] => {"0":{"api_key":"1111122222233333","payer_id":"00002","provider_first_name":"laura","provider_last_name":"brown","provider_npi":"444445555","member_first_name":"billy","member_last_name":"bob","dependent_ssn":"111-22-3333","member_dob":"1988-11-11","section":"curlapi"},"errors":[],"info":[]}
[1] => {"0":{"api_key":"1111122222233333","payer_id":"00112","provider_first_name":"laura","provider_last_name":"brown","provider_npi":"444445555","member_first_name":"billy","member_last_name":"bob","dependent_ssn":"111-22-3333","member_dob":"1988-11-11","section":"curlapi"},"errors":[],"info":[]}
)
$url = 'https://testapi.com/cov/all.json';
其次
$url .= '?' . http_build_query($params);
在foreach 循环中,每次都将新参数附加到字符串中,我会这样做:
$base_url = 'https://testapi.com/cov/all.json';
其次
$url = $base_url . '?' . http_build_query($params);
这是
错误的:
$payer_id = echo "$payer";
^^^
echo
是一种语言结构。它不是一个函数,也没有返回值。它只是执行输出。如此有效地使代码运行为
$payer_id = null;
尝试
$payer_id = $payer;
相反。请注意缺乏"
。如果您只是尝试将值从一个变量复制到另一个变量而不进行更改,则它们是完全不必要的。