当前位置: 首页 > 面试题库 >

Curl和PHP-如何通过PUT,POST,GET通过curl传递json

焦阎宝
2023-03-14
问题内容

我一直在为它构建一个Rest API,并且一直在使用命令行中的curl对它进行测试,这对于CRUD非常容易

我可以从命令行成功进行这些调用

curl -u username:pass -X GET http://api.mysite.com/pet/1
curl -d '{"dog":"tall"}' -u username:pass -X GET http://api.mysite.com/pet
curl -d '{"dog":"short"}' -u username:pass -X POST http://api.mysite.com/pet
curl -d '{"dog":"tall"}' -u username:pass -X PUT http://api.mysite.com/pet/1

上面的调用很容易从命令行进行,并且可以在我的api上正常使用,但是现在我想使用PHP创建curl。如您所见,我将数据作为json字符串传递。我已经阅读了很多,我想我可能可以进行POST并包含POST字段,但是我无法找出如何通过GET传递http正文数据。我看到的所有内容都说您必须将其附加到url,但在命令行表单上看起来却不是这样。无论如何,如果有人可以在一页上写出正确的方法来用PHP执行这四个操作,我会喜欢的。我想看看使用curl和php的最简单方法。我想我需要通过http正文传递所有内容,因为我的php
api使用php:// input捕捉了所有内容


问题答案:

$data = array('username'=>'dog','password'=>'tall');
$data_json = json_encode($data);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_json)));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response  = curl_exec($ch);
curl_close($ch);

开机自检

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response  = curl_exec($ch);
curl_close($ch);

GET 参见@Dan H答案

删除

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response  = curl_exec($ch);
curl_close($ch);


 类似资料:
  • 问题内容: 这是我的Java代码: 我这样称呼它: 问题是呼叫保持发布零零零,似乎我没有正确传递x和y。 更新资料 回答之后,我将请求更改为: 服务是: 但我仍然有同样的问题。这是服务器的响应: 您可以在末尾看到零:( 问题答案: (请注意,不是)是表单数据()向其发送了请求的正文,其中您的资源方法应更像 并且以下请求将起作用 注意: 在Windows中,必须使用双引号() 您甚至可以分离键值对

  • 问题内容: 如何使用将值传递给页面? 问题答案: 应该工作正常。 这里有两个选项,它们打开HTTP POST,并包含要提交的数组数组。可用于向 s 提交数据。 重要的是要注意,$ data采用两种格式,并且这决定了将如何编码邮政数据。 as :数据将以服务器并不总是接受的方式发送。 curl_setopt($handle, CURLOPT_POSTFIELDS, $data); 作为url编码的字

  • 问题内容: 这已经困扰了我好几天了;我正在尝试通过Curl发送SOAP帖子,但是我一直收到“无法连接到主机”错误,但是,我真的看不到如何。 我有一个ASP版本,可以在相同的URL和数据下正常工作。我认为这只是PHP / Curl的事情。 我目前有以下代码(数据是有效的SOAP信封字符串): 那么有什么想法为什么总是会出错? ASP版本工作正常!代码是: 问题答案: 非常感谢,您的代码对我有用。 这

  • 我如何发送此信息: 到API: 使用cURL,我目前一直在使用: 其中我得到了结果(NGrok): GET/testDir/curlPost。php HTTP/1.1 接受:text/html、Application/xhtml xml、image/jxr、/ 接受语言:en-GB 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537

  • 本文向大家介绍Dropbox API 在PHP中通过curl上传文件,包括了Dropbox API 在PHP中通过curl上传文件的使用技巧和注意事项,需要的朋友参考一下 示例 <ACCESS_TOKEN> 应该用OAuth 2访问令牌替换。

  • 本文向大家介绍Dropbox API 通过curl上传文件,包括了Dropbox API 通过curl上传文件的使用技巧和注意事项,需要的朋友参考一下 示例 这会将文件从matrices.txt当前文件夹中的本地路径/Homework/math/Matrices.txt上载到Dropbox帐户中,并返回上载文件的元数据: <ACCESS_TOKEN> 应该用OAuth 2访问令牌替换。