/*
POST /servlet/ICBCCMPAPIReqServlet?userID=jyi.y.1001&PackageID=201807311347539185&SendTime=20180731134755 HTTP/1.1
Host: 127.0.0.1:7070
Accept:*
Content-Type:application/x-www-form-urlencoded
Content-Length: 4211
Expect: 100-continue */ /*
HTTP/1.1 100 Continue
*/ /**
* * curlPost请求
* @param string $url 请求的url
* @param array $dataArr 发送的数据
* @param string $dataType 发送数据类型
* @param array $headerArr 请求头
* @param int $timeout 超时时间
* @author:songjm
* @date:2018.7.31
* @return array
*/
function curlPost($url, $dataArr, $dataType = 'arr', $headerArr = array(), $timeout = 3)
{
$headerArr[] = 'Expect:'
//防止libcurl发送大于1024字节数据时启用HTTP/1.1的Expect:100-continue特性
$ch = curl_init(); //初始化curl
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而不直接输出
curl_setopt($ch, CURLOPT_URL, $url); //设置请求的url
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArr);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证对等证书
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //不检查服务器SSL证书 $dataType = strtolower($dataType);
if ($dataType == 'json')
{
$data = json_encode($dataArr);
}
elseif ($dataType == 'ser')
{
$data = serialize($dataArr);
}
elseif ($dataType == 'raw')
{
$data = $dataArr;
}
else
{
$data = http_build_query($dataArr);
}
curl_setopt($ch, CURLOPT_POST, true); //设置为POST请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //设置POST的请求数据(字符串或数组) $response = curl_exec($ch);
if ($error = curl_error($ch))
{
$bkArr = array(
'code' => 0,
'msg' => $error,
);
}
else
{
$bkArr = array(
'code' => 1,
'msg' => 'ok',
'resp' => $response,
);
} curl_close($ch); // 关闭 cURL 释放资源 return $bkArr;
}

curl post请求封装的更多相关文章

  1. php CURL 发送请求封装

    cURL可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 ...

  2. PHP Request请求封装

    /** * Request请求封装 * Class Request * @package tool */ class Request { // curl 请求错误码 protected static ...

  3. 转:PHP中的使用curl发送请求(GET请求和POST请求)

    原文地址:http://www.jb51.net/article/104974.htm 使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 1.初始 ...

  4. 使用PHP中的curl发送请求

    使用CURL发送请求的基本流程 使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤: 初始化连接句柄: 设置CURL选项: 执行并获取结果: 释放VURL连接句柄. 下面的程序片段是 ...

  5. iOS开发——post异步网络请求封装

    IOS中有许多网络请求的函数,同步的,异步的,通过delegate异步回调的. 在做一个项目的时候,上网看了很多别人的例子,发现都没有一个简单的,方便的异步请求的封装例子.我这里要给出的封装代码,是异 ...

  6. WebApi系列~基于单请求封装多请求的设计

    回到目录 怎么说,单请求封装多请求,这句话确实有点绕了,但还是要看清楚,想明白这到底是怎么一回事,单请求即一次请求(get,post,put,delete),封闭多请求,即在客户端发送的一个请求中可能 ...

  7. 安卓OKhttp请求封装

    目前安卓开发中使用的网络工具为OKhttp,但是okhttp的使用还不是很方便,在okhttp的基础上再对请求进行封装会极大的方便网络调用. 下面直接上代码. 请求封装 public class Ht ...

  8. 简单的基于Vue-axios请求封装

    具体实现思路=>封装之前需要用npm安装并引入axios,使用一个单独的js模块作为接口请输出对象,然后export dafult 这个对象. 1.首先我们需要在Vue实例的原型prototyp ...

  9. 微信公众号开发系列-Http请求封装基类

    HttpHelper请求封装基类,支持get请求和POS请求,方便微信开发接口交互,为后面接口交互做准备. 1.HttpHelper帮助基类 [csharp] view plaincopy using ...

随机推荐

  1. ACM之路(15)—— 字典树入门练习

    刷的一套字典树的题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=120748#overview 个人喜欢指针的字典树写法,但是大力 ...

  2. java 网络文件下载(并命中文名)

    public void download(HttpServletRequest request, HttpServletResponse response){ //获取服务器文件 String fil ...

  3. 最初学习mysql的一些操作留存

    一:数据库的初始话操作 mysql -u root -p    //数据库的登陆 show databases:    //展现数据哭中存储的所有文件 use 数据库名:        //进入当前要 ...

  4. java实现自定义同步组件的过程

    实现同步组件twinsLock:可以允许两个线程同时获取到锁,多出的其它线程将被阻塞. 以下是自定义的同步组件类,一般我们将自定义同步器Sync定义为同步组件TwinsLock的静态内部类. 实现同步 ...

  5. nginx实现负载均衡、缓存功能实战

    nginx实现负载均衡.缓存功能实战 什么是正向代理?应用场景:翻墙 什么是反向代理?例如:haproxy和nginx   Nginx实现反向代理 nginx代理基于是ngx_http_proxy_m ...

  6. 继承关系下的this关键字

    继承关系下的this关键字 在继承关系下,父类中的this关键字并不总是表示父类中的变量和方法.this关键字的四种用法如前文所述,列举如下. 1) this(paras…); 访问其他的构造方法 2 ...

  7. ThinkPHP空操作与命名空间

    命名空间:相当于一个虚拟的目录 正常管理文件使用文件夹--物理区分 TP框架的初始命名空间是:ThinkPHP\Library 在TP框架下命名空间里面使用\代表的是初始命名空间(ThinkPHP\L ...

  8. 如何配置git send-email相关的邮箱信息?

    关键是配置smtpserver,请参考此处

  9. Callable和Supplier的区别

    A Callable is "A task that returns a result, while a Supplier is "a supplier of results&qu ...

  10. Scala语法03 - 函数