Я искал онлайн в течение нескольких дней и не смог найти хороший пример публикации данных с использованием php, я загрузил http_pecl и попытался использовать его
Не могли бы вы помочь мне понять, что не так с моим кодом? Я считаю, что я неправильно отправляю данные, поэтому сервер не может их увидеть (сервер ожидает данных так, как отправляет JQuery post)
$headers = array('method' => 'POST','Content-type' => 'application/json','content'=>json_encode(array('api_key'=>'5675476','grant_type' => 'password', 'username' => '12345','password'=>'12345')));
$r = new HttpRequest('http:/zztestapi.com/api/v5/authorize?api_key=5675476&grant_type=password&username=12345&password=12345', HttpRequest::METH_POST);
$r->setHeaders($headers);
$r->setContentType = 'application/json';
//$r->setBody(json_encode(array('api_key'=>'5675476','grant_type' => 'password', 'username' => '12345','password'=>'password')));
//$r->addPostFields(array('api_key'=>'5675476','grant_type' => 'password', 'username' => '12345','password'=>'password'));
//$r->addRawPostData(json_encode(array('api_key'=>'9000000141','grant_type' => 'password', 'username' => '12345','password'=>'password')));
$r->setOptions(array('cookies' => array('lang' => 'de')));
echo $r->send()->getBody();
$r->send();
Моя цель - получить код, который отправляется аналогично сообщению jquery
$.ajax({
url: 'http://zztestapi.com/api/v5/authorize',
type: 'POST',
data: {"api_key":"5675476","grant_type":"password","username":"12345","password":"12345"},
dataType: 'application/json',
success: function(data) {
alert(data);
}
});
Вы можете сделать это с помощью cURL, вот этот пример:
$data = array("name" => "Hagrid", "age" => "36");
$data_string = json_encode($data);
$ch = curl_init('http://api.local/rest/users');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
Надеюсь, это поможет!