自分のアプリケーションからサーバーとそのデータにアクセスしようとしています。ログインするには、ユーザー名とパスワードに加えて、私が持っている証明書が必要です。私の問題は、401 を取得し続けるため、明らかにこの情報を間違って送信していることです。このページで、ログイン後にこのサーバーから HAL+JSON データを取得できるはずです。前のページからフィールドがポストされ、それをサーバーに送信してデータを取得する必要があります。
これが私のコードです:
$username = 'foo';
$password = 'bar';
$auth_token = $username . '-' . $password;
$url = 'https://data.service.com'.$_POST['url'].'?callback=?';
$ch = curl_init($url);
/* Upon receiving the right certificate
* I should have a cookie with this information.
*/
$data_string = array('cert_url' => 'https://data.service.com/cert/2364o872ogfglsgw8ogiblsjy');
/* That hash at the end corresponds to the Public Key ID
* in the certificate. No idea how to retrieve this,
* or if I need to do it to login
*/
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/javascript',
'Access-Control-Allow-Origin: *',
'Content-Type: application/javascript',
"Authorization: Basic " . base64_encode($username.":".$password)
));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$result = curl_exec($ch);
if(curl_exec($ch) === false){
echo 'Curl error: ' . curl_error($ch);
print_r(error_get_last());
} else {
echo 'Operation completed without any errors';
curl_close($ch);
$response = json_decode($result, true); ?>