Я пытаюсь отправить данные сообщения и получить SID из api (qbittorrent), чтобы отправить запрос на получение позже. Я сейчас застрял с ответом OK, но json - NULL. Вот мой код:
<?php
$ch = curl_init();
$fields = array( 'username'=>'Admin','password'=>'mypassword');
$postvars = '';
foreach($fields as $key=>$value) {
$postvars .= $key . "=" . $value . "&";
}
$postvars = rtrim($postvars, '&');
$url = "https://192.123.123.123:8080/login";
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, 0);
$headers= array('Accept: application/json','application/x-www-form-urlencoded');
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$postvars);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,3);
curl_setopt($ch,CURLOPT_TIMEOUT, 20);
$response = curl_exec($ch);
var_dump(json_decode($response, true));
print "curl response is:" . $response;
curl_close ($ch);
?>
Вы можете увидеть документацию по API здесь https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-Documentation#authorization
Мне удалось заставить json использовать powershell так же просто, как:
$prms = @{username="Admin";password="mypassword"}
$res = Invoke-WebRequest https://192.123.123.123:8080/login -Method POST -Body prms -UseBasicParsing
но я не могу сделать это с помощью php! Если вы также чувствуете, что направляете меня правильно, чтобы получить запрос с использованием SID в качестве файла cookie, я буду более чем приветствуем :)
Проблема лежала там, изменилась:
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);
в
curl_setopt($ch, CURLOPT_HEADER, true);
И я получил ответ от json!
$postvars = rtrim($postvars, '&');
скорее всего, здесь необходимо удалить конечный амперсанд.