не может получить данные из URL, используя digeest curl - PullRequest
0 голосов
/ 10 сентября 2018

Я новичок в curl и API. Я пытаюсь получить информацию о моем образце пациента с помощью API.

имя пользователя и пароль были предоставлены администратором базы данных. Я пытаюсь использовать дайджест-аутентификацию, но появляется ошибка 400. Я пропускаю проверку сертификата SSL. Информация в шапке, которую я извлек из Почтальона.

См. Мой код ниже.

<?php
function patient()
{
$patient_id = '100';
// username & password
$username = "abc";
$password = "1234";

$secretKey = "abc:1234";

$url = "https://example.com/patient/demographic?patient_id=".$patient_id;

// test dummy data
$post_data = array(
                  'name' => 'John',
                  'district' => 'Hawaii'
            );
$header = array(
                "Authorization: Digest username=\"abc\",
                realm=\"mydomain.com\",
                nonce=\"ad7a9ds798ds798d79asd79asd79asd\",
                uri=\"/patient/demographic?patient_id=100\",
                algorithm=\"MD5\",
                response=\"kl345j3nk45lk34n5l34k5nl3k45nl345\",
                opaque=\"gb56u7b56u7b56u7b567b567b5b765b\"",
                "Cache-Control: no-cache"
            );

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_ENCODING, "");
curl_setopt($curl, CURLOPT_MAXREDIRS, 10);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_USERPWD, "$username:$password");
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post_data));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err):
    echo "Error: " . $err;
  else:
    // Show me the result
    $transaction = json_decode($response, TRUE);
    // curl_close($curl);
    echo "Var dump";
    echo "<br />";
    var_dump($transaction['response']);
    echo "<br />";
    echo $transaction;
    echo "<br />";
    echo $response;
  endif;
  }
 }
?>

Ошибка 400 Неверный запрос. Пожалуйста, помогите мне. Спасибо.

...