phpが他のインタフェースのpostまたはgetまたはdeleteまたはputを呼び出す方法
4991 ワード
1.PHP cURL関数基本リスト
2.HTTPの方式要求関数実現
3.上記の関数の呼び出し方法:
4.delete要求の2つのスキームを提供する他の要求方式のインタフェースを呼び出す.
curl_close() // cURL
curl_copy_handle() // cURL
curl_errno() //
curl_error() //
curl_escape() // , URL
curl_exec() // cURL
curl_file_create() // CURLFile
curl_getinfo() // cURL
curl_init() // cURL
curl_multi_add_handle() // curl curl
curl_multi_close() // cURL
curl_multi_exec() // cURL
curl_multi_getcontent() // CURLOPT_RETURNTRANSFER,
curl_multi_info_read() // cURL
curl_multi_init() // cURL
curl_multi_remove_handle() // curl
curl_multi_select() // cURL
curl_multi_setopt() // cURL
curl_multi_strerror() //
curl_pause() //
curl_reset() // libcurl
curl_setopt_array() // cURL
curl_setopt() // cURL
curl_share_close() // cURL
curl_share_init() // cURL
curl_share_setopt() // cURL
curl_strerror() //
curl_unescape() // URL
curl_version() // cURL
2.HTTPの方式要求関数実現
/**
* HTTP
* @param string $url URL
* @param array $params
* @param string $method GET/POST
* @return array $data
*/
function http($url, $params, $method = 'GET', $header = array(), $multi = false){
$opts = array(
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_HTTPHEADER => $header
);
/*
* strtoupper() 。
*/
switch(strtoupper($method)){
case 'GET':
$opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
break;
case 'POST':
//
$params = $multi ? $params : http_build_query($params);
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 1;
$opts[CURLOPT_POSTFIELDS] = $params;
break;
default:
throw new Exception(' !');
}
/* curl */
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if($error) throw new Exception(' :' . $error);
return $data;
}
3.上記の関数の呼び出し方法:
// URL;
$url = "https://www.xxx.com";
// ;
$data['aaa']='aaaaa';
$data['bbb']='bbbb';
// ;
$httpstr = http($url, $data, 'POST', array("Content-type: text/html; charset=utf-8"));
4.delete要求の2つのスキームを提供する他の要求方式のインタフェースを呼び出す.
/**
* [http ]
* @param string $url [ ]
* @param array $params [ ]
* @param string $method [GET\POST\DELETE\PUT]
* @param array $header [HTTP ]
* @param integer $timeout [ ]
* @return [type] [ ]
*/
function http($url, $params, $method = 'GET', $header = array(), $timeout = 5)
{
// POST $set_params
$opts = array(
CURLOPT_TIMEOUT => $timeout,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_HTTPHEADER => $header
);
//http_build_query & ,
/* */
switch (strtoupper($method)) {
case 'GET':
$opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
break;
case 'POST':
$params = http_build_query($params);
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 1;
$opts[CURLOPT_POSTFIELDS] = $params;
break;
// delete 1:
case 'DELETE':
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_HTTPHEADER] = array("X-HTTP-Method-Override: DELETE");
$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
$opts[CURLOPT_POSTFIELDS] = $params;
break;
// delete 1 , 2:
case 'DELETEGET':
$opts[CURLOPT_HTTPHEADER] = array("X-HTTP-Method-Override: DELETE");
$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
$opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
case 'PUT':
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 0;
$opts[CURLOPT_CUSTOMREQUEST] = 'PUT';
$opts[CURLOPT_POSTFIELDS] = $params;
break;
default:
throw new Exception(' !');
}
/* curl */
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$error = curl_error($ch);
return $data;
}