php 模擬http傳送請求三種方式(curl,stream流的方式,)
一,curl
cURL 是一個用來傳輸資料的工具,支援多種協議,如在 Linux 下用 curl 命令列可以傳送各種 HTTP 請求。PHP 的 cURL 是一個底層的庫,它能根據不同協議跟各種伺服器通訊,HTTP 協議是其中一種。
post請求
-
public static function http_post($url,$data_string,$timeout = 60)
-
{
-
//curl驗證成功
-
$ch = curl_init($url);
-
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
-
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string);
-
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
-
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);//// 跳過證書檢查
-
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
-
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
-
'Content-Type: application/json',
-
'Content-Length: ' . strlen($data_string)
-
));
-
$result = curl_exec($ch);
-
if (curl_errno($ch)) {
-
print curl_error($ch);
-
}
-
curl_close($ch);
-
return $result;
-
}
GET請求
public function doCurlGetRequest($url,$data,$timeout = 50){ if($url == "" || $timeout <= 0){ return false; } $url = $url.'?'.http_build_query($data); $con = curl_init((string)$url); curl_setopt($con, CURLOPT_HEADER, 0); curl_setopt($con, CURLOPT_RETURNTRANSFER,1); curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout); $output = curl_exec($con); //釋放curl控制代碼 curl_close($con); return $output; }
1,curl請求http
$url = '//www.jb51.net';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($curl);
curl_close($curl);
var_dump($data);
2,curl請求https
$url = 'https://www.jb51.net';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//這個是重點。
$data = curl_exec($curl);
curl_close($curl);
var_dump($data);
/**當請求https的資料時,會要求證書,這時候,加上下面這兩個引數,規避ssl的證書檢查
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證證書和hosts
**/
二,stream流的方式
stream_context_create 作用:建立並返回一個文字資料流並應用各種選項,可用於 fopen(), file_get_contents() 等過程的超時設定、代理伺服器、請求方式、頭資訊設定的特殊過程。
post 例子
function
post(
$url
,
$data
)
{
$postdata
= http_build_query(
$data
);//陣列轉化為路徑格式
$opts
=
array
(
'http'
=>
array
(
'method'
=>
'POST'
,
'header'
=>
'Content-type: application/x-www-form-urlencoded'
,
'content'
=>
$postdata
)
);
$context
= stream_context_create(
$opts
);
$result
=
file_get_contents
(
$url
, false,
$context
);
return
$result
;
}
三,
socket方式
使用套接字建立連線,拼接 HTTP 報文傳送資料進行 HTTP 請求。
一個 GET 方式的例子:
<?php
$fp
=
fsockopen
(
"www.example.com"
, 80,
$errno
,
$errstr
, 30);
if
(!
$fp
) {
echo
"$errstr ($errno)<br />\n"
;
}
else
{
$out
=
"GET / HTTP/1.1\r\n"
;
$out
.=
"Host: www.example.com\r\n"
;
$out
.=
"Connection: Close\r\n\r\n"
;
fwrite(
$fp
,
$out
);
while
(!
feof
(
$fp
)) {
echo
fgets
(
$fp
, 128);
}
fclose(
$fp
);
}
?>
相關推薦
php 模擬http傳送請求三種方式(curl,stream流的方式,)
一,curl cURL 是一個用來傳輸資料的工具,支援多種協議,如在 Linux 下用 curl 命令列可以傳送各種 HTTP 請求。PHP 的 cURL 是一個底層的庫,它能根據不同協議跟各種伺服器通訊,HTTP 協議是其中一種。 post請求 public
java程式碼利用RestTemplate模擬http傳送請求
我這邊用SpringBoot來配置RestTemplate 直接上程式碼,先是配置類 /** * Description: httpApiConfig, 用於restTemplate * User: zhouzhou * Date: 2018-09-14 * Time: 13:25 *
socket模擬http傳送請求
import java.io.IOException; import java.io.InputStream; import java.io.OutputStreamWriter; import java.net.InetAddress; import java.net.S
【c++】模擬實現迴圈佇列 三種方法(標識、浪費一個空間、計數器)
什麼是迴圈佇列? 為充分利用向量空間,克服”假溢位“現象的方法:將向量空間想象為一個首尾相接的圓環,並稱這種向量為迴圈向量。儲存在其中的佇列稱為迴圈佇列(Circular Queue)。 假象成如圖: 但實際上儲存空間還是一段連續的空間。 空佇列: 當有元素入隊時:
OpenCV邊緣檢測三種演算法(canny、sobel、laplacian)
Canny演算法 #include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp> using namespace std; using namespace cv; //邊緣檢測 int mai
JavaScript中this關鍵字改變指向的三種方法(apply、call、bind)
首先,瞭解一下this關鍵字。this關鍵字就涉及到函式呼叫的內容。函式的幾種呼叫方式: 普通函式呼叫 作為方法來呼叫 作為建構函式來呼叫 使用apply/call方法來呼叫 Function.prototype.bind方法 ES6箭頭函式 但是不管
Linux三種風格(Unix、BSD、GNU)下的ps的引數說明
Linux系統中使用GNUps命令支援3種不同型別的命令列引數: Unix風格的引數,前面加單破折線; BSD風格的引數,前面不加破折線; GNU風格的長引數,前面加雙破折線。 Unix風格 其中-f顯示的完整格式輸出資訊有: UID:啟動這些
以太坊智慧合約中函式呼叫三種方法(很重要!!!)
外部呼叫: sendTransaction/call 函式呼叫一般分外部呼叫和內部呼叫兩種, 外部呼叫是通過JSON-RPC介面實現對合約函式的呼叫, 有3種呼叫方式: testInstance.testFunc.sendTransaction(); testInstance.testFun
php模擬http請求的兩種姿勢
php http curl CURL$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, self::$connectTimeout); curl_setop
php 遞迴函式的三種實現方式 php利用遞迴函式實現無限級分類
遞迴函式是我們常用到的一類函式,最基本的特點是函式自身呼叫自身,但必須在呼叫自身前有條件判斷,否則無限無限呼叫下去。實現遞迴函式可以採取什麼方式呢?本文列出了三種基本方式。理解其原來需要一定的基礎知識水品,包括對全域性變數,引用,靜態變數的理解,也需對他們的作用範圍有所理解。遞迴函式也是解決無限級分類的一個很
php中字串定義的三種方式
三種定義方式 單引號 雙引號 定界符<<< 單引號與雙引號的區別: $name='張三'; echo $name; 輸出 張三 $name="張三"; echo $name; 輸出 張三
as3+php上傳圖片的三種方式
這裡的三種方式分別為: 1、二進位制傳輸(BINARY) 2、字串傳輸(String) 3、檔案流上傳(File) 開發IDE:FlashDevelop、Zend Studio。 1)設定FlashDevelop使用flash player10(debug版
Java http 請求三種形式
JavaHttp介面互動的兩種方式 JavaHttp介面開發針對表單提交跟Json提交的兩種方式 表單提交(post、get) get表單引數提交 /** * @param type * @param url
java 模擬http傳送json請求
java中經常會用到模擬http請來發送各種訊息,比如說,有get請求,post請求,post請求的引數又包括一般引數和json引數,http工具程式碼如下:import java.io.BufferedReader; import java.io.IOException;
C#模擬http 傳送POST或GET請求
1、POST: private string HttpPost(string Url, string postDataStr, CookieCollection cookies)
php 構造http頭 php模擬http請求 偽裝頭部資訊
http://jingyan.baidu.com/article/335530daafcd6019ca41c352.html <?php /** 構造 http 請求 */ $filename="http://sj.mjerp.com/dabenying
[php]模擬socket傳送GET,POST請求
模擬socket傳送GET,POST請求 作為php程式設計師一定會接觸http協議,也只有深入瞭解http協議,程式設計水平才會更進一步。最近我一直在學習php的關於http的程式設計,許多東西恍然大悟,受益匪淺。希望分享給大家。本文需要有一定http基
用PHP模擬HTTP中的POST請求JSP網頁,提交資料
今天我們來實現一個提交話費的WEB程式,主要應用在:代理電信公司話費交納。 第一步:獲取登入頁面的SESSION會話ID值. 為什麼要獲取SESSION值? 我們知道,使用者訪問一個網站時往往需要瀏覽許多網頁。對於一個通過PHP構築的網站來說,使用者在訪問的過程中需要執行許多的動態頁面
spring整合apache activemq實現訊息傳送的三種方式程式碼配置例項
我們專案中傳送事件告警要用到訊息佇列,所以學習了下activemq,整理如下: activemq的介紹就不用說了,官網上大家可以詳細的看到。 1.下載並安裝activemq:地址http://activemq.apache.org/activemq-590-rel
三種獲取源代碼的方式
erer 方法 重載方法 option 允許 nal sta groups utf using System; using System.Collections.Generic; using System.IO; using System.Linq; using