HTTP post from提交表单方式的接口对接项目

在项目中遇到这样的问题,对方要求上报方式是接口的请求方式采用 HTTP POST form 键值对形式,编码采用 UTF-8 编码格
式。Content-Type: application/x-www-form-urlencoded,相应参数字符串需根据实际情况进行转义。

拼接好参数数据,根据接口要求进行md5验证获取到sign值

第一种方式:提交类型 application/x-www-form-urlencoded

进行post提交,提交之前需使用函数http_build_query对拼接的数组进行转义,例如:

$paramArr                = http_build_query($paramArrs);

在进行post模拟提交函数

$resData                 = $curlModel->postData($paramArr);

在postData类里面,有CPost函数,函数内容需是:

public static function CPost($url, $data = null, $header = array()){
        $curl = curl_init();

        $iHeads = array(
            'Content-Type'     => 'Content-type: application/x-www-form-urlencoded',
            'Connection'         => 'Connection: close',
            'charset'          => 'utf-8'
        );

        $iHeads = array_merge($iHeads, $header);

        $timeout = 5;

        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
        curl_setopt($curl, CURLOPT_HTTPHEADER, $iHeads);//设置输入的
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
        curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);

        $outPut = curl_exec($curl);

        curl_close($curl);

        return $outPut;
    }

 

curl_setopt里面的设置参数与json POST提交有所不同,所以这些需要注意。

 

第二种方式:提交类型 Content-type: application/json

$resDatas = $curlModel->postData(json_encode($this->res));

public static function CPost($url, $data = null, $header = array())
    {
        $curl = curl_init();
        
        $iHeads = array(
            'Content-Type' => 'Content-type: application/json',
            'Connection' => 'Connection: close'
        );
        
        $iHeads = array_merge($iHeads, $header);
        
        $timeout = 20;
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
        curl_setopt($curl, CURLOPT_HTTPHEADER, $iHeads);
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        $outPut = curl_exec($curl);
        
        curl_close($curl);
        return $outPut;
    }

这是在做项目的时候遇到了一些问题,并在此坐下记录。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值