搜尋

curl 怎麼轉php

Nov 04, 2021 am 09:14 AM
curlphp

curl轉php的方法:1、透過「curl -X GET -H "Content-Type:application"...」取得狀態;2、設定狀態;3、透過「$header= array( ...)”方法實作curl轉為php發送即可。

curl 怎麼轉php

本文操作環境:windows7系統、PHP7.1版、DELL G3電腦

curl 怎麼轉php?

curl指令轉換成php原始碼

取得狀態:

curl -X GET -H "Content-Type:application/json" -H "Authorization: token 4e56266f2502936e0378ea6a985dc74a5bec4280" http://user.endv.cn/v1/datastreams/plug-status/datapoint/

回傳 

{"status": 200, "datapoint": null}

設定狀態

#
curl  -H "Authorization: token 6bcb3cdb69b07370f5ad73e7a856409802fdd735" -d "{\"datapoint\":{\"x\":1}}" http://user.endv.cn/v1/datastreams/plug-status/datapoint/?deliver_to_device=true

返回 

{"status": 404, "nonce": 333984364, "message": "remote device is disconnect"}

curl轉為php發送

取得狀態:

設定狀態:

 

利用php curl發送json資料與curl post其它資料是一樣的

#下面我來給大家總結幾個關於curl post發送json資料實例

#例1

$data = array("name" => "Hagrid", "age" => "36");                                                                      
$data_string = json_encode($data);                                                                                     
   
$ch = curl_init('http://api.local/rest/users');                                                                        
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                       
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                        
curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                            
    'Content-Type: application/json',                                                                                  
    'Content-Length: ' . strlen($data_string))                                                                         
);                                                                                                                     
   
$result = curl_exec($ch);

例2

function http_post_data($url, $data_string) {  
  
        $ch = curl_init();  
        curl_setopt($ch, CURLOPT_POST, 1);  
        curl_setopt($ch, CURLOPT_URL, $url);  
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);  
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(  
            'Content-Type: application/json; charset=utf-8',  
            'Content-Length: ' . strlen($data_string))  
        );  
        ob_start();  
        curl_exec($ch);  
        $return_content = ob_get_contents();  
        ob_end_clean();  
  
        $return_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);  
        return array($return_code, $return_content);  
    }  
  
$url  = "http://xx.xx.cn";  
$data = json_encode(array('a'=>1, 'b'=>2));  
  
list($return_code, $return_content) = http_post_data($url, $data);

範例3

$data=' {  
     "button":[  
     {      
          "type":"click",  
          "name":"今日歌曲",  
          "key":"V1001_TODAY_MUSIC"  
      },  
      {  
           "type":"click",  
           "name":"歌手简介",  
           "key":"V1001_TODAY_SINGER"  
      },  
      {  
           "name":"菜单",  
           "sub_button":[  
            {  
               "type":"click",  
               "name":"hello word",  
               "key":"V1001_HELLO_WORLD"  
            },  
            {  
               "type":"click",  
               "name":"赞一下我们",  
               "key":"V1001_GOOD"  
            }]  
       }]  
 }';  
  
$ch = curl_init($urlcon); //请求的URL地址  
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");  
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//$data JSON类型字符串  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data)));  
$data = curl_exec($ch);  
print_r($data);//创建成功返回:{"errcode":0,"errmsg":"ok"}

 

curl post發送與接收

<?php
    $url = "http://localhost/web_services.php";
    $post_data = array ("username" => "bob","key" => "12345");
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // post数据
    curl_setopt($ch, CURLOPT_POST, 1);
    // post的变量
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    
    $output = curl_exec($ch);
    curl_close($ch);
    
    //打印获得的数据
    print_r($output);
?>

 

<html>
<body>
Welcome <?php echo $_POST["username"]; ?>.<br />
You are <?php echo $_POST["key"]; ?> years old.
</body>
</html>

#get 測試

//curl -X GET -H "Content-Type:application/json" -H "Authorization: token 4e56266f2502936e0378ea6a985dc74a5bec4280" http://user.endv.cn/v1/datastreams/plug-status/datapoint/ 
    $url = "http://localhost/web_services.php";
    $post_data = array ("username" => "bob","key" => "12345");
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        
    $output = curl_exec($ch);
    curl_close($ch);
    
    //打印获得的数据
    print_r($output);

 

 

curl使用簡單介紹

Curl是Linux下一個很強大的http命令列工具,其功能十分強大。

1) 二話不說,先從這裡開始吧!

$ curl http://code.endv.cn

回車之後,code.endv.cn 的html就稀裡嘩啦地顯示在螢幕上了~

2) 嗯,要想把讀過來頁面存下來,是不是要這樣呢?

$ curl http://code.endv.cn > page.html

當然可以,但不用這麼麻煩的!

用curl的內建option就好,存下http的結果,用這個option: -o

$ curl -o page.html http://code.endv.cn

這樣,你就可以看到螢幕上出現一個下載頁面進度指示。等進展到100%,自然就 OK咯

3) 什麼? !訪問不到?肯定是你的proxy沒有設定了。

使用curl的時候,用這個option可以指定http訪問所使用的proxy伺服器及其連接埠: -x

$ curl -x 123.45.67.89:1080 -o page.html http://code.endv.cn

4) 造訪有些網站的時候比較討厭,他使用cookie來記錄session資訊。

像IE/NN這樣的瀏覽器,當然可以輕易處理cookie訊息,但我們的curl呢? .....

我們來學習這個option: -D

$ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://code.endv.cn

這樣,當頁面被存到page.html的同時,cookie資訊也被存到了cookie0001.txt裡面了

5)那麼,下次造訪的時候,如何繼續使用上次留下的cookie資訊呢?要知道,很多網站都是靠監視你的cookie訊息,來判斷你是不是不照規矩造訪他們的網站的。

這次我們使用這個option來把上次的cookie資訊追加到http request裡面去: -b

$ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://code.endv.cn

這樣,我們就可以幾乎模擬所有的IE操作,去訪問網頁了!

6)稍微等等 ~我好像忘記什麼了 ~

對了!是瀏覽器資訊

有些討厭的網站總要我們使用某些特定的瀏覽器去訪問他們,有時候更過分的是,還要使用某些特定的版本NND,哪裡有時間為了它去找這些怪異的瀏覽器呢! ?

好在curl給我們提供了一個有用的option,可以讓我們隨意指定自己這次訪問所宣稱的自己的瀏覽器信息: -A

$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://code.endv.cn

這樣,伺服器端接到訪問的要求,會認為你是一個運行在Windows 2000上的IE6.0,嘿嘿嘿,其實也許你用的是蘋果機呢!

而"Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686"則可以告訴對方你是一台PC上跑著的Linux,用的是Netscape 4.73,呵呵呵

7)另外一個伺服器端常用的限制方法,就是檢查http存取的referer。例如你先造訪首頁,再造訪裡面所指定的下載頁,這第二次造訪的 referer位址就是第一次造訪成功後的頁面位址。這樣,伺服器端只要發現對下載頁面某次造訪的referer位址不是首頁的位址,就可以斷定那是個盜連了 ~

討厭討厭 ~我就是要盜連 ~! !

幸好curl給我們提供了設定referer的option: -e

$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -e "mail.linuxidc.com" -o page.html -D cookie0001.txt http://code.endv.cn

這樣,就可以騙對方的伺服器,你是從mail.linuxidc.com點擊某個連結過來的了,呵呵呵

8)寫著發現漏掉什麼重要的東西了! ——- 利用curl 下載檔案

剛才講過了,下載頁面到一個檔案裡,可以使用 -o ,下載檔案也是一樣。例如,

$ curl -o 1.jpg http://img.endv.cn/~zzh/screen1.JPG

這裡教大家一個新的option: -O 大寫的O,這麼用:

$ curl -O http://img.endv.cn/~zzh/screen1.JPG

這樣,就可以按照伺服器上的檔名,自動存在本地了!

再來一個更好用的。

如果screen1.JPG以外還有screen2.JPG、screen3.JPG、....、screen10.JPG需要下載,難不成還要讓我們寫一個script來完成這些操作?

不幹!

在curl裡面,這麼寫就可以了:

$ curl -O http://img.endv.cn/~zzh/screen[1-10].JPG

呵呵呵,厲害吧? ! ~

9)再來,我們繼續講解下載!

$ curl -O http://img.endv.cn/~{zzh,nick}/[001-201].JPG

這樣產生的下載,就是

~zzh/001.JPG
~zzh/002.JPG
...
~zzh/201.JPG
~nick/001.JPG
~nick/002.JPG
...
~nick/201.JPG

夠方便的了吧?哈哈哈

咦?高興得太早了。

由於zzh/nick下的檔名都是001,002...,201,下載下來的檔案重名,後面的把前面的檔都給覆蓋掉了 ~

没关系,我们还有更狠的!

$ curl -o #2_#1.jpg http://img.endv.cn/~{zzh,nick}/[001-201].JPG

—这是.....自定义文件名的下载? —对头,呵呵!

这样,自定义出来下载下来的文件名,就变成了这样:原来: ~zzh/001.JPG —-> 下载后: 001-zzh.JPG 原来: ~nick/001.JPG —-> 下载后: 001-nick.JPG

这样一来,就不怕文件重名啦,呵呵

9)继续讲下载

我们平时在windows平台上,flashget这样的工具可以帮我们分块并行下载,还可以断线续传。curl在这些方面也不输给谁,嘿嘿

比如我们下载screen1.JPG中,突然掉线了,我们就可以这样开始续传

$ curl -c -O http://cgi2.tky.3wb.ne.jp/~zzh/screen1.JPG

当然,你不要拿个flashget下载了一半的文件来糊弄我 别的下载软件的半截文件可不一定能用哦 ~

分块下载,我们使用这个option就可以了: -r

举例说明

比如我们有一个http://img.endv.cn/~zzh/zhao1.mp3 要下载(赵老师的电话朗诵 :D )我们就可以用这样的命令:

$ curl -r 0-10240 -o "zhao.part1" http:/img.endv.cn/~zzh/zhao1.mp3 &\
$ curl -r 10241-20480 -o "zhao.part1" http:/img.endv.cn/~zzh/zhao1.mp3 &\
$ curl -r 20481-40960 -o "zhao.part1" http:/img.endv.cn/~zzh/zhao1.mp3 &\
$ curl -r 40961- -o "zhao.part1" http:/img.endv.cn/~zzh/zhao1.mp3

这样就可以分块下载啦。不过你需要自己把这些破碎的文件合并起来如果你用UNIX或苹果,用 cat zhao.part* > zhao.mp3就可以如果用的是Windows,用copy /b 来解决吧,呵呵

上面讲的都是http协议的下载,其实ftp也一样可以用。用法嘛,

$ curl -u name:passwd ftp://ip:port/path/file

或者大家熟悉的

$ curl ftp://name:passwd@ip:port/path/file

10) 说完了下载,接下来自然该讲上传咯上传的option是 -T

比如我们向ftp传一个文件:

$ curl -T localfile -u name:passwd ftp://upload_site:port/path/

当然,向http服务器上传文件也可以比如

$ curl -T localfile http://img.endv.cn/~zzh/abc.cgi

注意,这时候,使用的协议是HTTP的PUT method

刚才说到PUT,嘿嘿,自然让老服想起来了其他几种methos还没讲呢! GET和POST都不能忘哦。

http提交一个表单,比较常用的是POST模式和GET模式

GET模式什么option都不用,只需要把变量写在url里面就可以了比如:

$ curl http://code.endv.cn/login.cgi?user=nickwolfe&password=12345

而POST模式的option则是 -d

比如,

$ curl -d "user=nickwolfe&password=12345" http://code.endv.cn/login.cgi

就相当于向这个站点发出一次登陆申请 ~

到底该用GET模式还是POST模式,要看对面服务器的程序设定。

一点需要注意的是,POST模式下的文件上的文件上传,比如

<form method="POST" enctype="multipar/form-data" action="http://img.endv.cn/~zzh/up_file.cgi">
<input type=file name=upload>
<input type=submit name=nick value="go">
</form>

这样一个HTTP表单,我们要用curl进行模拟,就该是这样的语法:

$ curl -F upload=@localfile -F nick=go http://img.endv.cn/~zzh/up_file.cgi

罗罗嗦嗦讲了这么多,其实curl还有很多很多技巧和用法比如 https的时候使用本地证书,就可以这样

$ curl -E localcert.pem https://remote_server

再比如,你还可以用curl通过dict协议去查字典 ~

$ curl dict://dict.org/d:computer

推荐学习:《PHP视频教程

以上是curl 怎麼轉php的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
酸與基本數據庫:差異和何時使用。酸與基本數據庫:差異和何時使用。Mar 26, 2025 pm 04:19 PM

本文比較了酸和基本數據庫模型,詳細介紹了它們的特徵和適當的用例。酸優先確定數據完整性和一致性,適合財務和電子商務應用程序,而基礎則側重於可用性和

PHP安全文件上傳:防止與文件相關的漏洞。PHP安全文件上傳:防止與文件相關的漏洞。Mar 26, 2025 pm 04:18 PM

本文討論了確保PHP文件上傳的確保,以防止諸如代碼注入之類的漏洞。它專注於文件類型驗證,安全存儲和錯誤處理以增強應用程序安全性。

PHP輸入驗證:最佳實踐。PHP輸入驗證:最佳實踐。Mar 26, 2025 pm 04:17 PM

文章討論了PHP輸入驗證以增強安全性的最佳實踐,重點是使用內置功能,白名單方法和服務器端驗證等技術。

PHP API率限制:實施策略。PHP API率限制:實施策略。Mar 26, 2025 pm 04:16 PM

本文討論了在PHP中實施API速率限制的策略,包括諸如令牌桶和漏水桶等算法,以及使用Symfony/Rate-limimiter之類的庫。它還涵蓋監視,動態調整速率限制和手

php密碼哈希:password_hash和password_verify。php密碼哈希:password_hash和password_verify。Mar 26, 2025 pm 04:15 PM

本文討論了使用password_hash和pyspasswify在PHP中使用密碼的好處。主要論點是,這些功能通過自動鹽,強大的哈希算法和SECH來增強密碼保護

OWASP前10 php:描述並減輕常見漏洞。OWASP前10 php:描述並減輕常見漏洞。Mar 26, 2025 pm 04:13 PM

本文討論了OWASP在PHP和緩解策略中的十大漏洞。關鍵問題包括注射,驗證損壞和XSS,並提供用於監視和保護PHP應用程序的推薦工具。

PHP XSS預防:如何預防XSS。PHP XSS預防:如何預防XSS。Mar 26, 2025 pm 04:12 PM

本文討論了防止PHP中XSS攻擊的策略,專注於輸入消毒,輸出編碼以及使用安全增強的庫和框架。

PHP接口與抽像類:何時使用。PHP接口與抽像類:何時使用。Mar 26, 2025 pm 04:11 PM

本文討論了PHP中接口和抽像類的使用,重點是何時使用。界面定義了無實施的合同,適用於無關類和多重繼承。摘要類提供常見功能

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境