PHP中采用POST/GET方式发送数据,含contentType类型

问题描述

最近做一些向服务器请求数的app,查了好多都,不太好用,时不时的会失败,有的还没有content类型,对于一些指定类型的服务器就不太好说了,所以从网上搜索了几个,结合自己之前用过的,重新组合了一个POST/GET,代码来源于网络,只是做了部分修改,拿出来分享一下 直接上码:/** * 发送HTTP请求* * @param string $url 请求地址* @param string $method 请求方式 GET/POST * @param string $refererUrl 请求来源地址* @param array $data 发送数据* @param string $contentType * @param string $timeout * @param string $proxy * @return boolean */function send_request($url, $data, $refererUrl = '', $method = 'POST', $contentType = 'application/json', $timeout = 30, $proxy = false) { $ch = null; if('POST' === strtoupper($method)) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER,0 ); curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); /*修复加密网站不能成功的情况*/ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); /*--------------*/ if ($refererUrl) { curl_setopt($ch, CURLOPT_REFERER, $refererUrl); } if($contentType) { curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:'.$contentType)); } if(is_string($data)){ curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } else { curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); } } else if('GET' === strtoupper($method)) { if(is_string($data)) { $real_url = $url. (strpos($url, '?') === false ? '?' : ''). $data; } else { $real_url = $url. (strpos($url, '?') === false ? '?' : ''). http_build_query($data); } $ch = curl_init($real_url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:'.$contentType)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); if ($refererUrl) { curl_setopt($ch, CURLOPT_REFERER, $refererUrl); } } else { $args = func_get_args(); return false; } if($proxy) { curl_setopt($ch, CURLOPT_PROXY, $proxy); } $ret = curl_exec($ch); $info = curl_getinfo($ch); $contents = array( 'httpInfo' => array( 'send' => $data, 'url' => $url, 'ret' => $ret, 'http' => $info, ) ); curl_close($ch); return $ret;}使用: $data = '{"username":"****","email":"**X@mail.com"}'; $url="http://www.**xx.com/user"; $res = send_request($url,$data);挺方便的感觉效果不错,没发现有大的问题。如果有人有类似需求,推荐大家采用这个function.

时间: 2024-08-31 07:57:45

PHP中采用POST/GET方式发送数据,含contentType类型的相关文章

用 AFNetworking 通过 POST 方式发送数据

AFNetworking 版本为 2.0.2 POST 发送数据有两种形式: 1.发送纯文本的内容 2.发送的 body 部分带有文件(图片,音频或者其他二进制数据) 对应的 Content-Type 有两种: 1.application/x-www-form-urlencoded 2.multipart/form-data 传统的使用 POST 的方式发送数据用于上传文件,AFNetworking 中提供了直接的接口: [self.manager POST:post_url parameter

socket-VBS中Socket通过TCP协议发送数据

问题描述 VBS中Socket通过TCP协议发送数据 问题是一个接着一个: 在使用MSWINsock.Winsock通过TCP发送数据到Server的时候,提示如下错误: 代码如下: Dim sock,socket '赋值sock变量为WINSOCK的对象 Set sock = Wscript.createobject("MSWINsock.Winsock") sock.Protocol = 0 sock.RemoteHost = "10.185.59.51" so

java-如何在j2EE项目中采用Data Service 来管理数据 :支持数据的统一管理

问题描述 如何在j2EE项目中采用Data Service 来管理数据 :支持数据的统一管理 java项目中如何使用Dada Service 来管理项目: 要达到的目的:1,可以从多个数据源中加载数据,提供提供访问数据的统一接口 2,可以支持丰富的查询方式 ,实现内部的转换通过sqlParser 来对支持多种sql就如同 Apache 的calcite 项目中貌似可以找到蛛丝马迹,但是有好多的技术不是很了解 如:linq4jsparksplunkcsv ...等,有没有关于dataservice

lwip-如何用DMA方式发送数据(网络发送)

问题描述 如何用DMA方式发送数据(网络发送) 如何使DMA方式获得的数据通过lwip直接发送出去?中间不仅过别的软件

一个图表中同时用不同方式表示数据,水晶报表中默认只能用一种图表来表示

问题描述 一个图表中同时用不同方式表示数据,水晶报表中默认只能用一种图表来表示 解决方案 解决方案二:對水晶有研究的朋友幫幫忙解决方案三:两个图就是两个子报表啊.

webbrower中tcp协议 捕捉和发送数据

问题描述 祝各位新年快乐,万事如意网站是一个flash的页面聊天程序.通过tcp协议链接的.远程端口1311.一直保持着的端口我在窗体中方了一个webbrowser控件想通过webbrower来实现对返回数据的捕捉.并且可以向这个端口发送数据.只需要可以发送到这个端口和返回数据比如直接在自己的textbox文本中输入内容.点击之后就可以发送到此时web控件链接到的tcp端口上.并且如果有返回信息又可以直接捕捉到然后放在某个textbox文本中求demo.code.思路谢谢 解决方案 解决方案二:

Ajax POST方式发送请求服务器接收不到数据问题解决办法

直接看源码  代码如下 复制代码 <script language="javascript">    function setViewPoint() {     var msg =""; //用于接收返回数据     //实例化Ajax     var leeAjax = leeInitAjax();     var webRoot = window.location;     webRoot = webRoot.toString();     var

php模拟socket 多次发送数据的实现方法

表四:Socket函数函数名      描述socket_accept()    接受一个Socket连接socket_bind()     把socket绑定在一个IP地址和端口上socket_clear_error()   清除socket的错误或者最后的错误代码socket_close()     关闭一个socket资源socket_connect()    开始一个socket连接socket_create_listen()   在指定端口打开一个socket监听socket_crea

【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目

备份短信和添加短信 操作系统短信的uri: content://sms/ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima28.backupsms" android:versionCode="1