cURL-GET/POST/上传

1.最基本的抓取页面

<?php
	$cURL =  curl_init();//实例化curl对象
	curl_setopt($cURL,CURLOPT_URL,'www.baidu.com');
	curl_setopt($cURL,CURLOPT_RETURNTRANSFER,1);  //抓取到的结果不立即输出
	curl_setopt($cURL,CURLOPT_HEADER,0);  //header信息是否输出
	$result = curl_exec($cURL); //执行请求
	echo $result;
?>


2.带Get的请求。get 直接在URL加上参数domain?first=1&second=2


3.带POST的请求。

假设我们现在post两个东西。一个是字符串,一个是文件。

写两个脚本:

1.curl.php 用于处理模拟POST提交请求的

2.post.php验证CURL是否生效


<?php
        //post.php
	print_r($_POST);
	print_r($_FILES);
?>

<?php
	$ch = curl_init();
	$data = array('name' => 'Foo', 'file' => '@E:\wamp\www\1.jpg'); //绝对路径,且不建议有中文字符,必须加@告知是文件,否则当成字符串POST参数
	curl_setopt($ch, CURLOPT_URL, 'http://localhost/post.php');
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
	curl_exec($ch);
?>


运行,出现了如下问题:

技术分享

Array
  (
  [name] => Foo
  )
  Array
  (
  [file] => Array
  (
  [name] => 1.jpg
  [type] => application/octet-stream
  [tmp_name] => E:\wamp\tmp\phpD8FF.tmp
  [error] => 0
  [size] => 91046
  )
   
  )

我们只要加上PHP本身的上传函数,就已经实现了不通过表单提交的上传操作。上面提示了

Deprecated

这个是说虽然这个方法可以用,但是不赞成使用这个方法。好像ereg_match,session_registers.

同时这个错误提示还给我们一个建议,使用CURLFile class来解决上传问题。

<?php
$ch = curl_init();
$data = array(‘name‘ => ‘Foo‘, ‘file‘ => new \CURLFile(realpath(‘1.jpg‘))); //绝对路径
curl_setopt($ch, CURLOPT_URL, ‘http://localhost/post.php‘);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>

就是这么简单。开发的时候留心PHP的版本。如果代码在几个PHP版本下都有在部署。那么可以采取折中的方式。给与充分的判断。是采取@或者是调用CURLFile


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。