Как получить доступ к веб-службе REST с помощью file_get_contents с дайджест-аутентификацией в php

Как я могу использовать Restful API, используя file_get_contents и дайджест-аутентификацию в php.

Я знаю, что могу получить к нему доступ с помощью curl

$ch = curl_init('http://webservicesurlhere.com');


curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json'
        //,
        //'Content-Length: ' . strlen($data_string)
        )
);

$resources = curl_exec($ch);
curl_close($ch);

Но мой Текущий код написан с использованием file_get_contents. Доступ к аутентификации основного типа можно получить, используя приведенный ниже код.

$opts = array('http' =>
  array(
    'method'  => 'POST',
    'header'  => "Content-Type: text/xml\r\n".
      "Authorization: Basic ".base64_encode("$https_user:$https_password")."\r\n",
    'content' => $body,
    'timeout' => 60
  )
);

$context  = stream_context_create($opts);
$url = 'https://'.$https_server;
$result = file_get_contents($url, false, $context, -1, 40000);

Кто-нибудь знает, как я могу использовать file_get_contents для аутентификации типа Digest?

Связанная информация, которую я нахожу.

Как публиковать данные в PHP с помощью file_get_contents?

Вызов REST API в PHP


person Developer    schedule 28.01.2014    source источник


Ответы (2)


Как вы сказали, следующий код с использованием curl должен работать:

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
curl_setopt($ch, CURLOPT_USERPWD, 'user:secret');

Однако curl делает всю работу за вас. При использовании file_get_contents() вам необходимо реализовать digest аутентификацию самостоятельно. К сожалению, сейчас нет времени подготовить пример, но я надеюсь, что он поможет http://www.ietf.org/rfc/rfc2617.txt, http://freestyle-developments.co.uk/blog/?p=61 ...

Возможно, позже я также добавлю здесь собственный пример, потому что всегда хотел поближе познакомиться с дайджест-аутентификацией...

person hek2mgl    schedule 28.01.2014

Эта работа формирует меня через https и с ответом json

<?php 
 $login = 'USUARIO';
 $password = '123';
 $url = 'https://ww.google.com/datos-feps?date=13-08-2020';
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,$url);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
 curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
 $result_json = curl_exec($ch);
 curl_close($ch);    
 echo $result_json;      
?>
person Doberon    schedule 13.08.2020