컬을 PHP로 변환하는 방법

藏色散人
풀어 주다: 2023-03-13 17:32:01
원래의
2045명이 탐색했습니다.

curl을 PHP로 변환하는 방법: 1. "curl -X GET -H "Content-Type:application"..."을 통해 상태를 가져옵니다. 2. "$header= array(. ..)” 메소드를 사용하여 컬을 PHP로 변환하여 전송할 수 있습니다.

컬을 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/
로그인 후 복사

Return

{"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
로그인 후 복사

Return

{"status": 404, "nonce": 333984364, "message": "remote device is disconnect"}
로그인 후 복사

curl은 php로 변환되어 전송됩니다.

상태 가져오기:

로그인 후 복사

설정 상태:

로그인 후 복사

PHP 컬을 사용하여 json 데이터를 보내는 것은 컬 포스트의 다른 데이터와 동일합니다

컬 포스트에서 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 게시물 보내기 및 받기

<?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 test

//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
로그인 후 복사

Enter를 누르면 code.endv.cn의 html이 화면에 나옵니다~

2) 자, 읽은 페이지를 저장하려면 이렇게 해야겠죠?

$ curl http://code.endv.cn > page.html
로그인 후 복사

물론 가능하지만 그렇게 번거로울 필요는 없습니다!

curl의 내장 옵션을 사용하면 http 결과를 저장하려면 다음 옵션을 사용하세요: -o

$ curl -o page.html http://code.endv.cn
로그인 후 복사

이렇게 하면 다운로드 페이지 진행률 표시가 화면에 나타나는 것을 볼 수 있습니다. 진행률이 100%가 되면 괜찮습니다

3) 뭐? ! 접속할 수 없나요? 프록시가 구성되지 않았어야 합니다.

curl을 사용할 때 이 옵션을 사용하여 http 액세스에 사용되는 프록시 서버와 해당 포트를 지정할 수 있습니다: -x

$ curl -x 123.45.67.89:1080 -o page.html http://code.endv.cn
로그인 후 복사

4) 일부 웹사이트를 방문할 때 세션 정보를 기록하기 위해 쿠키를 사용합니다.

IE/NN과 같은 브라우저는 확실히 쿠키 정보를 쉽게 처리할 수 있지만 컬은 어떻습니까? .....

이 옵션을 알아봅시다: -D <— http 응답에 있는 쿠키 정보를 특수 파일에 저장하는 것입니다

$ curl -x 123.45.67.89:1080 -o page.html -D cookie0001.txt http://code.endv.cn
로그인 후 복사

이렇게 페이지가 page.html에 저장되면 동시에 쿠키 정보도 cookie0001.txt에 저장됩니다

5) 그러면 지난 번에 남겨둔 쿠키 정보를 다음 방문 시 어떻게 계속 사용할 수 있을까요? 아시다시피, 많은 웹사이트에서는 귀하가 규칙을 위반하여 해당 웹사이트를 방문하고 있는지 확인하기 위해 귀하의 쿠키 정보를 모니터링합니다.

이번에는 이 옵션을 사용하여 http 요청에 마지막 쿠키 정보를 추가합니다: -b

$ curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://code.endv.cn
로그인 후 복사

이러한 방식으로 거의 모든 IE 작업을 시뮬레이션하여 웹 페이지에 액세스할 수 있습니다!

6) 잠깐만요~뭔가 잊어버린 것 같아요~

그렇습니다! 그것은 브라우저 정보입니다

일부 성가신 웹사이트에서는 항상 특정 브라우저를 사용하여 액세스해야 할 때도 있습니다. 때로는 특정 NND 버전을 사용해야 한다는 점입니다. ? 브라우저! ?

다행히도, 컬은 이번 방문에 대해 우리가 선언하는 브라우저 정보를 임의로 지정할 수 있는 유용한 옵션을 제공합니다: -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입니다. 혹시 Mac을 사용하고 계시나요?

그리고 "Mozilla/4.73 [en] (X11; U; Linux 2.2; 15 i686"은 Netscape 4.73을 사용하여 PC에서 Linux를 실행하고 있음을 상대방에게 알릴 수 있습니다. 하하하

7) 또 하나 일반적으로 사용되는 제한 사항 서버 측의 방법은 http 액세스에 대한 리퍼러를 확인하는 것입니다. 예를 들어, 홈페이지를 먼저 방문한 후 거기에 지정된 다운로드 페이지를 방문하는 경우 두 번째 방문의 참조 주소는 첫 번째 방문 성공 후의 페이지 주소가 됩니다. 이런 식으로 특정 다운로드 페이지 방문의 참조 주소가 홈페이지 주소가 아니라는 것을 서버가 알아내는 한, 도용된 연결이라고 결론을 내릴 수 있습니다~

싫어요~그냥 훔치고 싶을 뿐이에요 인연~! !

다행히도, 컬은 리퍼러를 설정할 수 있는 옵션을 제공합니다: -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
로그인 후 복사

여기서 새로운 옵션을 가르쳐드립니다: -O capital O, 다음과 같이 사용하십시오:

$ curl -O http://img.endv.cn/~zzh/screen1.JPG
로그인 후 복사

이 방법으로 서버의 파일 이름에 따라 자동으로 로컬에 저장할 수 있습니다!

여기에 더 유용한 또 다른 것이 있습니다.

screen1.JPG 외에도 screen2.JPG, screen3.JPG, ...., screen10.JPG를 다운로드해야 하는 경우 이러한 작업을 완료하려면 스크립트를 작성해야 할 수 있나요?

더 이상은 안돼!

컬에서는 이렇게 쓰면 됩니다:

$ 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视频教程

위 내용은 컬을 PHP로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿