许多同学在第一次使用curl的时候感觉一个头两个大(包括我在内),看着这一条条的curl_setopt函数完全摸不着头脑,不过在你花10分钟看了我的介绍后相信你以后也能轻松戏耍php的curl了
首先,请看一个curl代码(花10秒钟,略看一遍,然后跳到后文)
1
2 $data = "
3 $tuCurl = curl_init();
4 curl_setopt($tuCurl, CURLOPT_URL, "https://example.com/path/for/soap/url/");
5 curl_setopt($tuCurl, CURLOPT_PORT , 443);
6 curl_setopt($tuCurl, CURLOPT_VERBOSE, 0);
7 curl_setopt($tuCurl, CURLOPT_HEADER, 0);
8 curl_setopt($tuCurl, CURLOPT_SSLVERSION, 3);
9 curl_setopt($tuCurl, CURLOPT_SSLCERT, getcwd() . "/client.pem");
10 curl_setopt($tuCurl, CURLOPT_SSLKEY, getcwd() . "/keyout.pem");
11 curl_setopt($tuCurl, CURLOPT_CAINFO, getcwd() . "/ca.pem");
12 curl_setopt($tuCurl, CURLOPT_POST, 1);
13 curl_setopt($tuCurl, CURLOPT_SSL_VERIFYPEER, 1);
14 curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, 1);
15 curl_setopt($tuCurl, CURLOPT_POSTFIELDS, $data);
16 curl_setopt($tuCurl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml","SOAPAction: \"/soap/action/query\"", "Content-length: ".strlen($data)));
17
18 $tuData = curl_exec($tuCurl);
19 if(!curl_errno($tuCurl)){
20 $info = curl_getinfo($tuCurl);
21 echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url'];
22 } else {
23 echo 'Curl error: ' . curl_error($tuCurl);
24 }
25
26 curl_close($tuCurl);
27 echo $tuData;
28 ?>
WTF,这到底是在做什么?
想要学会这种“高端”的用法吗?
首先,相信你肯定知道网址大部分是由http开头的,那是因为他们需用通过http(超文本传送协议 HTTP-Hypertext transfer protocol)来进行数据传输,但是传输数据不是简单的将一句"Hello"传到服务器上就搞定的事情,发送者为了方便接受者理解发送者的实际意图以及知道发送人到底是何许人也,发送者往往要将许多额外信息一并发给接受者,就像寄信人需要在信件外套一个信封一样,信封上写着各种发信人的信息。所有的这些最终合并成了一个叫做报文(message)的玩意,也就构成了整个互联网的基础。
curl的工作就是通过http协议发送这些message (php的libcurl目前还支持https、ftp、telnet等其他协议)
现在再看代码,实际上代码只做了五件事情
curl_init()初始化curl
curl_setopt()设置传输数据和参数
curl_exec()执行传输并获取返回数据
curl_errono()返回错误码
curl_close()关闭curl
下面给出使用GET和POST方法如何抓取和提交任意页面的数据
1
2 //初始化
3 $curl = curl_init();
4 //设置url
5 curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
6 //设置返回获取的输出为文本流
7 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
8 //执行命令
9 $data = curl_exec($curl);
10 //关闭URL请求
11 curl_close($curl);
12 //显示获得的数据
13 print_r($data);
14 ?>
15
16
17 //初始化
18 $curl = curl_init();
19 //设置url
20 curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
21 //设置返回获取的输出为文本流
22 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
23 //设置post方式提交
24 curl_setopt($curl, CURLOPT_POST, 1);
25 //设置post数据
26 curl_setopt($curl, CURLOPT_POSTFIELDS, array("data"=>"value");
27 //执行命令
28 $data = curl_exec($curl);
29 //关闭URL请求
30 curl_close($curl);
31 //打印数据
32 print_r($data);
33 ?>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기
