dlh_test_server/vendor/icbc-api-sdk-cop-php/WebUtils.php

119 lines
3.6 KiB
PHP
Raw Normal View History

2024-08-03 10:04:14 +08:00
<?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('/"/', '&quot;', $value).'">'."\n";
}
}
?>