>  기사  >  백엔드 개발  >  컬을 사용하여 PHP에서 요청을 보내는 방법

컬을 사용하여 PHP에서 요청을 보내는 방법

墨辰丷
墨辰丷원래의
2018-05-25 16:59:541670검색

이 글에서는 주로 PHP에서 컬을 사용하여 요청(GET 요청 및 POST 요청)을 보내는 방법을 소개합니다. 편집자는 꽤 좋다고 생각하여 지금 공유하고 참고용으로 제공하겠습니다. 편집기를 따라 살펴보겠습니다

CURL을 사용하여 요청을 보내는 기본 프로세스

CURL의 PHP 확장을 사용하여 HTTP 요청 보내기를 완료하는 단계는 일반적으로 다음과 같습니다.

1 연결을 초기화합니다.

2. CURL 옵션 설정

3. VURL 연결 핸들을 실행하고 가져옵니다.

다음 프로그램 조각은 CURL을 사용하여 HTTP를 보내는 일반적인 프로세스입니다.

// 1. 初始化
 $ch = curl_init();
 // 2. 设置选项,包括URL
 curl_setopt($ch,CURLOPT_URL,"http://www.devdo.net");
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
 curl_setopt($ch,CURLOPT_HEADER,0);
 // 3. 执行并获取HTML文档内容
 $output = curl_exec($ch);
 if($output === FALSE ){
 echo "CURL Error:".curl_error($ch);
 }
 // 4. 释放curl句柄
 curl_close($ch);

위 코드에서는 네 가지 함수가 사용됩니다.


curl_init() 및 curl_close()는 CURL 연결을 초기화하고 닫는 데 사용됩니다. CURL 연결은 각각 상대적으로 간단합니다.
  • curl_exec()는 CURL 요청을 실행합니다. 오류가 발생하지 않으면 함수는 해당 URL에서 반환된 데이터를 반환하여 오류가 발생하면 만족을 문자열로 표시합니다. 등호는 출력이 FALSE인지 여부를 결정하는 데 사용됩니다. 이는 빈 문자열 반환과 오류를 구별하기 위한 것입니다.
  • CURL 함수 라이브러리에서 가장 중요한 함수는 컬_setopt()입니다. 이 함수는 CURL 함수 라이브러리에서 정의한 옵션을 설정하여 HTTP 요청을 사용자 정의할 수 있습니다. 위의 코드 조각에는 세 가지 중요한 옵션이 사용됩니다.
  • ①CURLOPT_URL은 요청된 URL을 지정합니다.

②CURLOPT_RETURNTRANSFER는 나중에 실행되는 컬_exec 함수의 반환이 URL의 반환 문자열이 아님을 나타내기 위해 1로 설정됩니다. 반환 문자 문자열은 표준 출력으로 전달되고 TRUE를 반환합니다.

3CURLLOPT_HEADER는 0으로 설정되어 HTTP 헤더 정보가 반환되지 않음을 나타냅니다.

CURL에는 다양한 옵션이 있습니다. PHP 공식 웹사이트(http://www.php.net/manual/en/function.curl-setopt.php)로 이동하면 CURL에서 지원하는 모든 옵션 목록을 볼 수 있습니다.

CURL 요청 출력 정보 가져오기

curl_exec() 함수가 실행된 후, cur_getinfo() 함수를 사용하면 CURL 요청 출력 관련 정보를 가져올 수 있습니다. 샘플 코드는 다음과 같습니다. :

curl_exec($ch);
$info = curl_getinfo($sh);
echo ' 获取 '.$info['url'].'耗时'.$info['total_time'].'秒';

위 코드에서 컬_getinfo는 다음 데이터를 포함하는 연관 배열을 반환합니다.

url: 네트워크 주소.
  • content_type: 콘텐츠 인코딩.
  • http_code: HTTP 상태 코드.
  • header_size: 헤더의 크기입니다.
  • request_size: 요청의 크기입니다.
  • filetime: 파일이 생성된 시간입니다.
  • ssl_verify_result: SSL 확인 결과.
  • redirect_count: 점프 횟수.
  • total_time: 총 소요 시간입니다.
  • namelookup_time: DNS 쿼리에 시간이 걸립니다.
  • connect_time: 연결을 기다리는 데 소요된 시간입니다.
  • pretransfer_time: 편입 전 준비에 걸리는 시간입니다.
  • size_uplpad: 업로드된 데이터의 크기입니다.
  • size_download: 다운로드된 데이터의 크기입니다.
  • speed_download: 다운로드 속도.
  • speed_upload: 업로드 속도.
  • download_content_length: 다운로드 콘텐츠의 길이입니다.
  • upload_content_length: 업로드된 콘텐츠의 길이입니다.
  • starttransfer_time: 환승을 시작하는 시간표입니다.
  • redirect_time: 리디렉션 시간.
  • curl_getinfo() 함수에는 선택적 매개변수 $opt도 있으며, 이를 통해 위 필드에 해당하는 일부 상수를 설정할 수 있습니다. 두 번째 매개변수가 설정된 경우 지정된 정보만 반환됩니다. 예를 들어 $opt를 CURLINFO_TOTAL_TIME으로 설정하면, 컬_getinfo() 함수는 전체 전송에 소요되는 시간인 total_time만 반환하게 되는데, 이는 특정 전송 정보에만 주의하면 되는 경우 $opt 매개변수를 설정하는 것이 의미가 있다. .

CURL을 사용하여 GET 요청 보내기

CURL을 사용하여 GET 요청 보내기 방법 GET 요청 보내기의 핵심은 URL을 올바른 형식으로 조합하는 것입니다. 요청 주소와 GET 데이터는 "?"로 구분되고, GET 변수의 이름과 값은 "="로 구분되며, 각 GET 이름과 값은 "&"로 연결됩니다. PHP는 GET 요청과 데이터 부분을 조합하는 데 특별히 사용되는 함수인 http_build_query를 제공합니다. 이 함수는 연관 배열을 받아들이고 연관된 데이터로 설명되는 GET 요청 문자열을 반환합니다. CURL이 HTTP 요청을 보내는 일반적인 프로세스와 결합된 이 함수를 사용하여 GET 요청을 보내는 함수인 doCurlGetRequest를 닫았습니다. 구체적인 코드는 다음과 같습니다.

/**
 *@desc 封闭curl的调用接口,get的请求方式。
*/
function doCurlGetRequest($url,$data,$timeout = 5){
 if($curl == "" || $timeout <= 0){
 return false;
 }
 $url = $url.&#39;?&#39;.http_bulid_query($data);
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT, (int)$timeout);
 
 return curl_exec($con);
}

이 함수는 http_build_query를 사용하여 URL을 조합합니다. GET 매개변수를 컬_init 함수에 전달한 다음 CURL을 사용하여 HTTP 요청을 보냅니다.

CURL을 사용하여 POST 요청 보내기

CURL에서 제공하는 CURLOPT_POSTFIELDS 옵션을 POST 문자열 데이터로 설정하여 요청을 본문에 넣을 수 있습니다. 마찬가지로 POST 요청(doCurlPostRequest)을 보내는 함수를 구현했습니다. 코드는 다음과 같습니다.

/**
** @desc 封装 curl 的调用接口,post的请求方式
**/
function doCurlPostRequest($url,$requestString,$timeout = 5){
 if($url == &#39;&#39; || $requestString == &#39;&#39; || $timeout <=0){
 return false;
 }
 $con = curl_init((string)$url);
 curl_setopt($con, CURLOPT_HEADER, false);
 curl_setopt($con, CURLOPT_POSTFIELDS, $requestString);
 curl_setopt($con, CURLOPT_POST,true);
 curl_setopt($con, CURLOPT_RETURNTRANSFER,true);
 curl_setopt($con, CURLOPT_TIMEOUT,(int)$timeout);
 return curl_exec($con); 
}

위 코드에서 CURLOPT_POSTFIELDS를 설정하는 것 외에도 CURL_POST를 true로 설정하여 이 요청이 POST 요청. GET 데이터는 POST 요청으로 전송될 수도 있습니다. URL에서 GET 요청 데이터를 조합하기만 하면 됩니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.


관련 권장 사항:

php는 curl을 사용하여 액세스용 IP 및 소스를 시뮬레이션하는 방법을 구현합니다.

PHP는 인증이 필요한 페이지를 가져오는 curl 또는 file_get_contents 방법을 구현합니다

php 사용 curl시뮬레이션 양식 제출 기능 구현 방법

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.