Curl GET/POST/上传学习

本文详细介绍了如何使用PHP处理不同类型的HTTP请求,包括GET、POST、JSON、XML等,并展示了如何通过curl发送这些请求及处理上传文件。

request.php源码

<?php
# GET/POST
var_dump($_REQUEST);

#PHP数据流
$input = file_get_contents('php://input');
var_dump($input);

#上传文档
var_dump($_FILES);

 

传递请求数据

默认curl使用GET方式请求数据,这种方式下直接通过URL传递数据
可以通过 --data/-d 方式指定使用POST方式传递数据

# GET  
 curl http://172.20.41.35:82/conf/cc/request.php?access_token=XXXXXXXXXX
结果:

array(1) {
  ["access_token"]=>
  string(10) "XXXXXXXXXX"
}
string(0) ""
array(0) {
}
# POST 
curl --data "param1=value1&param2=value2" http://172.20.41.35:82/conf/cc/request.php
结果:

array(2) {
  ["param1"]=>
  string(6) "value1"
  ["param2"]=>
  string(5) "value2"
}
string(26) "param1=value1&param2=value2"
array(0) {
}

 

# POST JSON
curl --data "{"param1":"value1","param2":"value2"}" http://172.20.41.35:82/conf/cc/request.php

curl --connect-timeout 15 -H "Content-Type: application/json" -sd '{"data":"value"}' http://172.20.41.35:82/conf/cc/request.php
结果:
array(0) {
}
string(29) "{param1:value1,param2:value2}"
array(0) {
}

 

# POST XML
 curl --data "<?xml version="1.0" encoding="utf-8" ?>
<Root>
  <user id="001">
    <admin>
      <name>yucai</name>
      <password>123456</password>
      <age>21</age>
    </admin>    
  </user> 
</Root>" http://172.20.41.35:82/conf/cc/request.php
结果:
array(1) {
  ["<?xml_version"]=>
  string(171) "1.0 encoding=utf-8 ?>
<Root>
  <user id=001>
    <admin>
      <name>yucai</name>
      <password>123456</password>
      <age>21</age>
    </admin>    
  </user> 
</Root>"
}
string(185) "<?xml version=1.0 encoding=utf-8 ?>
<Root>
  <user id=001>
    <admin>
      <name>yucai</name>
      <password>123456</password>
      <age>21</age>
    </admin>    
  </user> 
</Root>"
array(0) {
}

 

file.txt内容

# 也可以指定一个文件,将该文件中的内容当作数据传递给服务器端 
curl --data @file.txt http://172.20.41.35:82/conf/cc/request.php

结果:
array(0) {
}
string(2) "11"
array(0) {
}

  

   注:默认情况下,通过POST方式传递过去的数据中若有特殊字符,首先需要将特殊字符转义在传递给服务器端,如value值中包含有空格,则需要先将空格转换成%20,如:

 curl -d "value%201"
结果:
array(0) {
}
string(9) "value%201"
array(0) {
}

 

在新版本的CURL中,提供了新的选项 --data-urlencode,通过该选项提供的参数会自动转义特殊字符。

curl --data-urlencode "value 1"
结果:
array(0) {
}
string(9) "value%201"
array(0) {
}

 

除了使用GET和POST协议外,还可以通过 -X 选项指定其它协议,如:

curl -I -X DELETE
结果:
HTTP/1.1 200 OK
Date: Tue, 30 Sep 2014 02:36:40 GMT
Server: Apache/2.2.8 (Win32) PHP/5.2.6
X-Powered-By: PHP/5.2.6
Content-Length: 26
Content-Type: text/html

 

上传文件

curl --form "fileupload=@file.txt" http://172.20.41.35:82/conf/cc/request.php
结果:
array(0) {
}
string(0) ""
array(1) {
  ["fileupload"]=>
  array(5) {
    ["name"]=>
    string(8) "file.txt"
    ["type"]=>
    string(10) "text/plain"
    ["tmp_name"]=>
    string(27) "C:\Windows\Temp\php65E1.tmp"
    ["error"]=>
    int(0)
    ["size"]=>
    int(3)
  }
}

转载于:https://my.oschina.net/longhtml/blog/323431

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值