使用PHP& amp; 400的http代码错误CUrl& gifs.com API

时间:2017-11-02 13:55:07

标签: php curl

我找了一个php&的示例代码curl,我发现了这个链接http://www.php-guru.in/2013/upload-files-using-php-curl/

我尝试使用gifs.com API的代码尝试将gif转换为mp4(出于速度原因),然后将其显示在我的网站上。我尝试使用giphy网址上传到gifs.com,所以我最终得到了以下代码。

  $url = 'https://api.gifs.com/media/upload';
  $headers = array("Content-Type:multipart/form-data", "Gifs-API-Key:gifkey"); // cURL headers for file uploading
  $postfields = array("file" => "@https://media.giphy.com/media/l378drKbCncSKYbS0/giphy.gif", "title" => 'guineapig');
  $ch = curl_init();
  $options = array(
      CURLOPT_URL => $url,
      CURLOPT_HEADER => true,
      CURLOPT_POST => 1,
      CURLOPT_HTTPHEADER => $headers,
      CURLOPT_POSTFIELDS => $postfields,
      CURLOPT_RETURNTRANSFER => true
  ); // cURL options
  curl_setopt_array($ch, $options);
  $server_output = curl_exec($ch);

  if (!curl_errno($ch)) { 
    $info = curl_getinfo($ch);
    echo $info['http_code'];
    echo $server_output;
   } else { 
    $errmsg = curl_error($ch);
    echo $errmsg;
  }

  curl_close ($ch);

问题是,它总是显示400个http_code,我不知道是什么问题

这是显示的完整错误

HTTP/1.1 100 Continue HTTP/1.1 400 Bad Request Server: nginx Date: Thu, 02 Nov 2017 13:44:05 GMT Content-Type: text/plain; charset=utf-8 Content-Length: 0 Access-Control-Allow-Credentials: false Access-Control-Allow-Headers: Origin, Accept,Content-Type,Gifs-API-Key Access-Control-Allow-Methods: GET,POST,OPTIONS Access-Control-Allow-Origin: * Access-Control-Max-Age: 43200 Request-Id: 9b78a2d3-0f25-4f13-bb2d-a40b75e6fa8f Via: 1.1 google Alt-Svc: clear

我不明白错误

注意:我正在使用localhost xampp服务器,这是导致它搞乱的原因吗?

1 个答案:

答案 0 :(得分:0)

结果我只需要使用他们的导入API,因为它是gif的链接而不是文件上传,所以我用json而不是multipart-form改变了标题

  $url = 'https://api.gifs.com/media/import';
  $headers = array("Gifs-API-Key: gifkey", "Content-Type: application/json"); // cURL headers for file uploading
  $postfields = "{\n \"source\": \"https://media.giphy.com/media/l378drKbCncSKYbS0/giphy.gif\",\n \"title\": \"guineapig\",\n \"tags\": [\"crazy\", \"hand drawn\", \"2015\", \"art\"],\n \"attribution\": {\n   \"site\": \"vine\",\n   \"user\": \"someone\"\n }\n}";
  $ch = curl_init();
  $options = array(
      CURLOPT_URL => $url,
      CURLOPT_HEADER => true,
      CURLOPT_POST => 1,
      CURLOPT_HTTPHEADER => $headers,
      CURLOPT_POSTFIELDS => $postfields,
      CURLOPT_RETURNTRANSFER => true
  ); // cURL options
  curl_setopt_array($ch, $options);
  $server_output = curl_exec($ch);

  if (!curl_errno($ch)) { 
    $info = curl_getinfo($ch);
    echo $info['http_code'];
    echo $server_output;
   } else { 
    $errmsg = curl_error($ch);
    echo $errmsg;
  }

  curl_close ($ch);