119 lines
3.6 KiB
PHP
119 lines
3.6 KiB
PHP
|
|
<?php
|
||
|
|
include_once 'IcbcConstants.php';
|
||
|
|
class WebUtils{
|
||
|
|
private static $version = "v2_20170324";
|
||
|
|
|
||
|
|
public static function doGet($url, $params, $charset){
|
||
|
|
$headers = array();
|
||
|
|
$headers[IcbcConstants::$VERSION_HEADER_NAME] = self::$version;
|
||
|
|
$getUrl = self::buildGetUrl($url, $params, $charset);
|
||
|
|
|
||
|
|
|
||
|
|
$ch = curl_init();
|
||
|
|
curl_setopt($ch, CURLOPT_URL, $getUrl);
|
||
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||
|
|
|
||
|
|
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
|
||
|
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS,8000);
|
||
|
|
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 30000);
|
||
|
|
|
||
|
|
|
||
|
|
$response = curl_exec($ch);
|
||
|
|
$resinfo = curl_getinfo($ch);
|
||
|
|
curl_close($ch);
|
||
|
|
|
||
|
|
if($resinfo["http_code"] != 200){
|
||
|
|
throw new Exception("response status code is not valid. status code: ".$resinfo["http_code"]);
|
||
|
|
}
|
||
|
|
|
||
|
|
return $response;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function doPost($url, $params, $charset){
|
||
|
|
$headers = array();
|
||
|
|
$headers[] = 'Expect:';
|
||
|
|
$headers[IcbcConstants::$VERSION_HEADER_NAME] = self::$version;
|
||
|
|
|
||
|
|
$ch = curl_init();
|
||
|
|
curl_setopt($ch, CURLOPT_URL, $url);
|
||
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
|
||
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
||
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
|
||
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||
|
|
|
||
|
|
curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
|
||
|
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS,8000);
|
||
|
|
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 30000);
|
||
|
|
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
|
||
|
|
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
|
||
|
|
|
||
|
|
|
||
|
|
$response = curl_exec($ch);
|
||
|
|
$resinfo = curl_getinfo($ch);
|
||
|
|
curl_close($ch);
|
||
|
|
|
||
|
|
if($resinfo["http_code"] != 200){
|
||
|
|
throw new Exception("response status code is not valid. status code: ".$resinfo["http_code"]);
|
||
|
|
}
|
||
|
|
return $response;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function buildGetUrl($strUrl, $params, $charset){
|
||
|
|
if ($params == null || count($params) == 0) {
|
||
|
|
return $strUrl;
|
||
|
|
}
|
||
|
|
$buildUrlParams = http_build_query($params);
|
||
|
|
if(strrpos($strUrl,'?',0) != (strlen($strUrl) + 1)){ //最后是否以?结尾
|
||
|
|
return $strUrl.'?'.$buildUrlParams;
|
||
|
|
}
|
||
|
|
return $strUrl.$buildUrlParams;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function buildOrderedSignStr($path,$params){
|
||
|
|
$isSorted=ksort($params);
|
||
|
|
$comSignStr = $path.'?';
|
||
|
|
|
||
|
|
$hasParam = false;
|
||
|
|
foreach ($params as $key => $value) {
|
||
|
|
if(null == $key || "" == $key || null == $value || ""==$value){
|
||
|
|
|
||
|
|
}else{
|
||
|
|
if ($hasParam) {
|
||
|
|
$comSignStr=$comSignStr.'&';
|
||
|
|
}else{
|
||
|
|
$hasParam=true;
|
||
|
|
}
|
||
|
|
$comSignStr=$comSignStr.$key.'='.$value;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return $comSignStr;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function buildForm($url,$params){
|
||
|
|
$buildedFields = self::buildHiddenFields($params);
|
||
|
|
return '<form name="auto_submit_form" method="post" action="'.$url.'">'."\n".$buildedFields.'<input type="submit" value="立刻提交" style="display:none" >'."\n".'</form>'."\n".'<script>document.forms[0].submit();</script>';
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function buildHiddenFields($params){
|
||
|
|
if ($params == null || count($params) == 0) {
|
||
|
|
return '';
|
||
|
|
}
|
||
|
|
|
||
|
|
$result = '';
|
||
|
|
foreach ($params as $key => $value) {
|
||
|
|
if($key == null || $value == null){
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
$buildfield = self::buildHiddenField($key,$value);
|
||
|
|
$result = $result.$buildfield;
|
||
|
|
}
|
||
|
|
return $result;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function buildHiddenField($key,$value){
|
||
|
|
return '<input type="hidden" name="'.$key.'" value="'.preg_replace('/"/', '"', $value).'">'."\n";
|
||
|
|
}
|
||
|
|
}
|
||
|
|
?>
|