带有JSON响应的PHP curl POST请求
我正在尝试发送post数据并从api(qbittorrent)接收SID,以便稍后使用get请求发送。我目前的回答是OK,但是json是空的。这是我的密码:带有JSON响应的PHP curl POST请求,php,json,post,curl,get,Php,Json,Post,Curl,Get,我正在尝试发送post数据并从api(qbittorrent)接收SID,以便稍后使用get请求发送。我目前的回答是OK,但是json是空的。这是我的密码: <?php $ch = curl_init(); $fields = array( 'username'=>'Admin','password'=>'mypassword'); $postvars = ''; foreach($fields as $key=>$value) { $postva
<?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);
?>
但是我无法用php实现这一点!如果您还想使用SID作为cookie直接向我发送get请求,我将非常欢迎:)问题就在那里,已更改:
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);
到
我得到了我的json响应 问题就在那里,改变了:
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);
到
我得到了我的json响应 $postvars将在末尾额外添加一个“&”。这是个问题吗?('username=Admin&password=mypassword&')。另外,您是否需要循环来连接字符串,或者只发送数组-curl_setopt($ch,CURLOPT_POSTFIELDS,$fields)<代码>$postvars=rtrim($postvars,&')此处可能需要code>来删除尾随的符号和。编辑了我的问题,仍然得到相同的结果。服务器仍然回复“ok”,我尝试了一个错误的密码,我得到了“Fails”@jkns.co我真的不知道需要发送什么,我假设是一个字符串,但我认为问题不在于初始请求,因为我得到了ok响应,但更多关于返回的数据:\json_解码期间可能有问题。do
echo json\u last\u error\u msg()查看是什么阻止它从字符串返回JSON对象。也echo$响应
在解码之前查看字符串是什么。$postvars将在末尾有一个额外的“&”。这是个问题吗?('username=Admin&password=mypassword&')。另外,您是否需要循环来连接字符串,或者只发送数组-curl_setopt($ch,CURLOPT_POSTFIELDS,$fields)<代码>$postvars=rtrim($postvars,&')此处可能需要code>来删除尾随的符号和。编辑了我的问题,仍然得到相同的结果。服务器仍然回复“ok”,我尝试了一个错误的密码,我得到了“Fails”@jkns.co我真的不知道需要发送什么,我假设是一个字符串,但我认为问题不在于初始请求,因为我得到了ok响应,但更多关于返回的数据:\json_解码期间可能有问题。doecho json\u last\u error\u msg()查看是什么阻止它从字符串返回JSON对象。也echo$响应
在解码前查看字符串是什么。但是您发送了错误的请求。两行都做,但你还是发送了错误的请求。两行都做。
curl_setopt($ch, CURLOPT_HEADER, true);