php curl處理get和post請求

CURL 是一個利用URL語法規定來傳輸文件和數據的工具,支持很多協議,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 CURL 庫。使用PHP的CURL 庫可以簡單和有效地去抓網頁。你只需要運行一個腳本,然后分析一下你所抓取的網頁,然后就可以以程序的方式得到你想要的數據了。無論是你想從從一個鏈接上取部分數據,或是取一個XML文件并把其導入數據庫,那怕就是簡單的獲取網頁內容,CURL 是一個功能強大的PHP庫。

PHP建立CURL請求的基本步驟

①:初始化

curl_init()

②:設置屬性

curl_setopt().有一長串CURL 參數可供設置,它們能指定URL請求的各個細節。

③:執行并獲取結果

curl_exec()

④:釋放句柄

curl_close()

CURL實現GET和POST

①:GET方式實現

復制代碼
 1  //初始化
 2     $curl = curl_init();
 3     //設置抓取的url
 4     curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
 5     //設置頭文件的信息作為數據流輸出
 6     curl_setopt($curl, CURLOPT_HEADER, 1);
 7     //設置獲取的信息以文件流的形式返回,而不是直接輸出。
 8     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 9     //執行命令
10     $data = curl_exec($curl);
11     //關閉URL請求
12     curl_close($curl);
13     //顯示獲得的數據
14     print_r($data);
復制代碼

②:POST方式實現

復制代碼
 1 //初始化
 2     $curl = curl_init();
 3     //設置抓取的url
 4     curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
 5     //設置頭文件的信息作為數據流輸出
 6     curl_setopt($curl, CURLOPT_HEADER, 1);
 7     //設置獲取的信息以文件流的形式返回,而不是直接輸出。
 8     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 9     //設置post方式提交
10     curl_setopt($curl, CURLOPT_POST, 1);
11     //設置post數據
12     $post_data = array(
13         "username" => "coder",
14         "password" => "12345"
15         );
16     curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
17     //執行命令
18     $data = curl_exec($curl);
19     //關閉URL請求
20     curl_close($curl);
21     //顯示獲得的數據
22     print_r($data);
復制代碼

③:如果獲得的數據時json格式的,使用json_decode函數解釋成數組。

$output_array = json_decode($data,true); //如果第二個參數為true,就轉為數組的形式。如果不填就為對象的形式

如果使用json_decode($data)解析的話,將會得到object類型的數據。

我自己封裝的一個函數

復制代碼
 1 //參數1:訪問的URL,參數2:post數據(不填則為GET),參數3:提交的$cookies,參數4:是否返回$cookies
 2  function curl_request($url,$post='',$cookie='', $returnCookie=0){
 3         $curl = curl_init();
 4         curl_setopt($curl, CURLOPT_URL, $url);
 5         curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
 6         curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
 7         curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
 8         curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
 9         if($post) {
10             curl_setopt($curl, CURLOPT_POST, 1);
11             curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
12         }
13         if($cookie) {
14             curl_setopt($curl, CURLOPT_COOKIE, $cookie);
15         }
16         curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
17         curl_setopt($curl, CURLOPT_TIMEOUT, 10);
18         curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
19         $data = curl_exec($curl);
20         if (curl_errno($curl)) {
21             return curl_error($curl);
22         }
23         curl_close($curl);
24         if($returnCookie){
25             list($header, $body) = explode("\r\n\r\n", $data, 2);
26             preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
27             $info['cookie']  = substr($matches[1][0], 1);
28             $info['content'] = $body;
29             return $info;
30         }else{
31             return $data;
32         }
33 }
復制代碼

這倆個函數雖然不難,但是還是值得學習一下的。因為在做接口或者調用的接口的時候,必定會用到這倆個函數。

轉載于:https://www.cnblogs.com/myJuly/p/10107289.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248838.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248838.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248838.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Web】JavaWeb項目為什么我們要放棄jsp?為什么要前后端解耦?為什么要前后端分離?2.0版,為分布式架構打基礎。 - CSDN博客

前戲 前后端分離已成為互聯網項目開發的業界標準使用方式,通過nginxtomcat的方式(也可以中間加一個nodejs)有效的進行解耦, 并且前后端分離會為以后的大型分布式架構、彈性計算架構、微服務架構、多端化服務(多種客戶…

MongoDB升級導致啟動失敗

起因 最近項目使用MongoDB,但是作為一個技術菜鳥,NoSQL數據庫我還真不會用,于是我就在自己的阿里云服務器上安裝了一個MongoDB4.0.9。 現象 但是當我使用yum -y update升級以后,MongoDB無法啟動了,即使重裝刪除了MongDB的文件了還…

測者的測試技術手冊:揭開java method的一個秘密--巨型函數

揭開java method的一個秘密:巨型函數 相信,很多人都不知道Java的Method的上限為64K。本文將超過這個上限的函數叫做巨型函數。 巨型函數的問題 1、如果代碼超過了這個限制,Java編譯器就報"Code too large to complier"的錯誤。 2、…

前端攻略系列(二) - 前端各種面試題

幸運且光榮的被老大安排了一個任務 - “去整理些前端面試題”。年前確實不是招人的好時候,所以我們前端團隊經過了超負荷的運轉,終于堅持過了春節。春節以后就開始招人啦,這套題考察的目標就是基礎基礎再基礎,嘿嘿。 事先聲明&…

html 初識

一、web請求流程模擬 python編寫的簡易服務器應用程序 import socketserversocket.socket() ip_port (127.0.0.1,8080) server.bind(ip_port) server.listen()while 1:conn, addr server.accept()from_browser_msgconn.recv(1024)print(from_browser_msg)conn.send(bHTTP/1.1 …

Iframe的那些事

在web開發中,經常會用到iframe,難免會碰到需要在父窗口中使用iframe中的元素、或者在iframe框架中使用父窗口的元素 js 在父窗口中獲取iframe中的元素 1、 格式:window.frames["iframe的name值"].document.getElementByIdx_x(…

異常處理try...catch...throw

C 引入了異常處理機制。其基本思想是:函數 A 在執行過程中發現異常時可以不加處理,而只是“拋出一個異常”給 A 的調用者,假定為函數 B。 拋出異常而不加處理會導致函數 A 立即中止,在這種情況下,函數 B 可以選擇捕獲 …

Makefile 中:= ?= += =的區別

是最基本的賦值: 是覆蓋之前的值? 是如果沒有被賦值過就賦予等號后面的值 是添加等號后面的值轉載于:https://www.cnblogs.com/mingyunrangwozoudaoxianzai/p/10118039.html

原生JS寫Ajax的請求函數

本文主要介紹了如何通過原生JavaScript封裝ajax請求,文中給出了具體的實現代碼和詳細的解釋,希望對你有所幫助。 一、JS原生Ajax ajax:一種請求數據的方式,不需要刷新整個頁面; ajax的技術核心是 XMLHttpRequest 對象&…

軟件工程--第十三周學習進度

第十三周代碼量258 所花時間 6h博客量 2篇了解到的知識點 在尋找“水王”程序編寫時,學習了一種新的設計思想,兩兩刪除法,最后剩下的就是水王。這種設計思想,感覺可以用到多種編程,感覺很有意思。轉載于:https://www.c…

如何使用 tf object detection

# 如何使用 tf object detectionhttps://juejin.i m/entry/5a7976166fb9a06335319080https://towardsdatascience.com/how-to-train-your-own-object-detector-with-tensorflows-object-detector-api-bec72ecfe1d9https://towardsdatascience.com/building-a-toy-detector-with…

WEB文件上傳之JQuery ajaxfileupload插件使用(二)

1.JQuery ajaxfileupload插件使用準備 下載地址: http://www.phpletter.com/DOWNLOAD/ 2.原理分析 ajaxfileupload也是利用iframe實現無刷新異步提交,與我的上一篇文章(WEB文件上傳之apache common upload使用(一)&…

Navicat安裝激活

有條件的同學麻煩不要使用下面的激活步驟,僅供個人學習使用 。。。。。。 。。。。。。 。。。。。。 。。。。。。 一、去官網下載最新Navicat軟件https://www.navicat.com.cn/download/navicat-premium 二、去下載激活腳本https://github.com/DoubleLabyrinth/nav…

WEB文件上傳之apache common upload使用(一)

文件上傳一個經常用到的功能,它有許多中實現的方案。 頁面表單 RFC1897規范 http協議上傳 頁面控件(flash/html5/activeX/applet) RFC1897規范 http協議上傳 頁面控件(flash/html5/activeX/applet) 自定義數據規范 http協議上傳 頁面控件(flash/html5/act…

前端CSS學習筆記

一 CSS介紹 層疊樣式表(英文全稱:Cascading Style Sheets)是一種用來表現HTML(超文本標記語言)或XML(標準通用標記語言的一個子集)等文件樣式的計算機語言。CSS不僅可以靜態地修飾網頁,還可以配合各種腳本語…

自律以自救

在一次邏輯思維的跨年晚會上,羅胖曾以「帝王」來形容活在當下移動互聯網世界的人們。一個手機 App 可以讓你足不出戶,享受上百名廚師團隊的服務,中飯想吃啥菜式、樣品,輸入框中一應俱全,光論規格,可能已超過…

Validform使用入門

Validform使用入門 1、引入css 請查看下載文件中的style.css,把里面Validform必須部分復制到你的css中(文件里這個注釋 "/*以下部分是Validform必須的*/" 之后的部分是必須的)。之前發現有部分網友把整個style.css都引用在了頁面…

Java爬取并下載酷狗音樂

本文方法及代碼僅供學習,僅供學習。 案例: 下載酷狗TOP500歌曲,代碼用到的代碼庫包含:Jsoup、HttpClient、fastJson等。 正文: 1、分析是否可以獲取到TOP500歌單 打開酷狗首頁,查看TOP500,發現存…

C 表達式及返回值

以下程序的輸出結果是__A____。 #include<stdio.h> main() {int i10,j10;printf("%d,%d\n",i,j--); } A、11,10 B、9,10 C、010,9 D、10,9 8.若變量a、i已正確定義&#xff0c;且i已正確賦值&#xff0c;合法的語句是___B___。 A、a1 B、i; C、…

Webpack/Vue-cli兩種方式加載markdown文件并實現代碼高亮

準備的資源&#xff1a; highlight.js &#xff1a; 實現代碼高亮&#xff0c;通過npm install highlight.js -D安裝 vue-markdown-loader&#xff1a;解析md文件的必備loader&#xff0c;通過npm install vue-markdown-loader -D安裝 下面我們分兩個場景來說明一下md文件的…