Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有JSON响应的PHP curl POST请求_Php_Json_Post_Curl_Get - Fatal编程技术网

带有JSON响应的PHP curl POST请求

带有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

我正在尝试发送post数据并从api(qbittorrent)接收SID,以便稍后使用get请求发送。我目前的回答是OK,但是json是空的。这是我的密码:

<?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,&')来删除尾随的符号和。编辑了我的问题,仍然得到相同的结果。服务器仍然回复“ok”,我尝试了一个错误的密码,我得到了“Fails”@jkns.co我真的不知道需要发送什么,我假设是一个字符串,但我认为问题不在于初始请求,因为我得到了ok响应,但更多关于返回的数据:\json_解码期间可能有问题。do
echo json\u last\u error\u msg()echo$响应
在解码之前查看字符串是什么。$postvars将在末尾有一个额外的“&”。这是个问题吗?('username=Admin&password=mypassword&')。另外,您是否需要循环来连接字符串,或者只发送数组-curl_setopt($ch,CURLOPT_POSTFIELDS,$fields)<代码>$postvars=rtrim($postvars,&')来删除尾随的符号和。编辑了我的问题,仍然得到相同的结果。服务器仍然回复“ok”,我尝试了一个错误的密码,我得到了“Fails”@jkns.co我真的不知道需要发送什么,我假设是一个字符串,但我认为问题不在于初始请求,因为我得到了ok响应,但更多关于返回的数据:\json_解码期间可能有问题。do
echo json\u last\u error\u msg()echo$响应
在解码前查看字符串是什么。但是您发送了错误的请求。两行都做,但你还是发送了错误的请求。两行都做。
curl_setopt($ch, CURLOPT_HEADER, true);