Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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
将cURL命令转换为PHP_Php_Curl_Box Api - Fatal编程技术网

将cURL命令转换为PHP

将cURL命令转换为PHP,php,curl,box-api,Php,Curl,Box Api,我正在尝试将下面的cURL命令转换为PHP curl-khttps://api.box.com/2.0/files/content -H“授权:承载8tuuIMsrf3ShyODVdw”-F filename=@txt.txt-F folder_id=0 以下是我的尝试: $url = 'https://api.box.com/2.0/folders/content'; $params['filename'] = '@txt.txt'; $params['folder_id'] = '0'; $

我正在尝试将下面的cURL命令转换为PHP

curl-khttps://api.box.com/2.0/files/content -H“授权:承载8tuuIMsrf3ShyODVdw”-F filename=@txt.txt-F folder_id=0

以下是我的尝试:

$url = 'https://api.box.com/2.0/folders/content';
$params['filename'] = '@txt.txt';
$params['folder_id'] = '0';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer ".$this->access_token, "Content-Type: multipart/form"));
$data = curl_exec($ch);
curl_close($ch);

但是它不起作用。有人能帮助我理解为什么我做的是错误的,以及我能做些什么来修改我的代码吗?谢谢

尝试从
CURLOPT\u HTTPHEADER
选项中删除标题
“内容类型:多部分/表单”
,因为cURL将根据您的帖子数据为您解决此问题


由于您正在上载文件,内容类型将自动设置为
multipart/form data
,这实际上是正确的内容类型,而不是
multipart/form

尝试删除标题
“内容类型:multipart/form”
从您的
CURLOPT\u HTTPHEADER
选项中选择,因为cURL将根据您的帖子数据为您解决此问题


由于您正在上载文件,内容类型将自动设置为
multipart/form data
,这实际上是正确的内容类型,而不是
multipart/form
curl-k
表示不安全。添加以下行:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
翻译自德国手册(请注意,英文版缺少此信息):

如果已停用CURLOPT_SSL_VERIFYPEER,则还必须禁用CURLOPT_SSL_VERIFYHOST选项


其余的代码应该可以正常工作。

curl-k表示不安全。添加以下行:

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
翻译自德国手册(请注意,英文版缺少此信息):

如果已停用CURLOPT_SSL_VERIFYPEER,则还必须禁用CURLOPT_SSL_VERIFYHOST选项


您的其余代码应该可以正常工作。

我尝试过这样做,但仍然遇到问题。我不确定的一件事是如何将-F cURL命令转换为PHP。从cURL文档中,-F
让cURL模拟一个填充表单,其中用户按下了提交按钮。这导致curl根据RFC 2388使用内容类型multipart/form data发布数据。我真的不知道如何解释这一点,所以我只是尝试在POST请求中使用它们作为参数(key,value)。是否正确,-F相当于$params数组和CURLOPT_POSTFIELDS选项。什么是
$data
?错误消息或空?$数据为空。当我跟踪网络活动时,它说POST请求发送时没有出现错误,但没有发生任何事件try
echo curl_error($ch)
curl\u exec()
之后,查看是否有错误。此外,
curl\u getinfo()
对于获取有关请求和响应的信息非常有用。这个api调用应该做什么?上载文件?还可以将选项
CURLOPT_HEADER
设置为true,因为响应将包括http头,这在调试来自API的错误响应时可能很有用。我尝试过这样做,但仍然遇到问题。我不确定的一件事是如何将-F cURL命令转换为PHP。从cURL文档中,-F
让cURL模拟一个填充表单,其中用户按下了提交按钮。这导致curl根据RFC 2388使用内容类型multipart/form data发布数据。我真的不知道如何解释这一点,所以我只是尝试在POST请求中使用它们作为参数(key,value)。是否正确,-F相当于$params数组和CURLOPT_POSTFIELDS选项。什么是
$data
?错误消息或空?$数据为空。当我跟踪网络活动时,它说POST请求发送时没有出现错误,但没有发生任何事件try
echo curl_error($ch)
curl\u exec()
之后,查看是否有错误。此外,
curl\u getinfo()
对于获取有关请求和响应的信息非常有用。这个api调用应该做什么?上载文件?另外,将选项
CURLOPT_HEADER
设置为true也很有用,因为响应将包括http头,这在调试来自API的错误响应时可能很有用。捕捉得很好,但我尝试实现了这一点,但我的代码仍然不起作用。我认为我写的代码有一个基本问题,要么是设置头的方式,要么是将cURL-F命令翻译成PHP。请参阅我对另一个答案的评论,了解更多细节。很好,但我尝试实现了这一点,但我的代码仍然不起作用。我认为我写的代码有一个基本问题,要么是设置头的方式,要么是将cURL-F命令翻译成PHP。更多细节请参见我对另一个答案的评论。