php用fsockopen实现post提交数据并获得返回数据
/**
* 函数介绍: 用于post方式提交数据
* 输入参数: 完整url, 数据
* 返回值 : 接口返回值
*/
function post_it($url, $data = '', $timeout = '6') {
$urls = parse_url($url);
if (!$urls) {
return "-500";
}
$port = isset($urls['port']) ? $urls['port'] : null; //isset()判断
if (!$port) {
$port = "80";
}
$host = $urls['host'];
//----------------------------------------------//
$httpheader = "POST " . $url . " HTTP/1.0" . "\r\n" . "Accept:*/*" . "\r\n" . "Accept-Language:zh-cn" . "\r\n" . "Referer:" . $url . "\r\n" . "Content-Type:application/x-www-form-urlencoded" . "\r\n" . "User-Agent:Mozilla/4.0(compatible;MSIE 7.0;Windows NT 5.1)" . "\r\n" . "Host:" . $host . "\r\n" . "Content-Length:" . strlen($data) . "\r\n" . "\r\n" . $data;
$fd = fsockopen($host, $port);
if (!is_resource($fd)) {
return "fsockopen failed";
}
fwrite($fd, $httpheader);
stream_set_blocking($fd, TRUE);
stream_set_timeout($fd, $timeout);
$info = stream_get_meta_data($fd);
$gets = "";
while ((!feof($fd)) && (!$info['timed_out'])) {
$data .= fgets($fd, 8192);
$info = stream_get_meta_data($fd);
@ob_flush();
flush();
}
if ($info['timed_out']) {
return "timeout";
} else {
//echo $data;
$contentInfo = explode("\n\n", str_replace("\r", "", $data)); if (!strstr($contentInfo[0], "HTTP/1.1 200 OK")) {
return -10;
}
return trim($contentInfo[1]);
}
}
/**
* 函数介绍: 用于post方式提交数据
* 输入参数: 完整url, 数据
* 返回值 : 接口返回值
*/
function post_it($url, $data = '', $timeout = '6') {
$urls = parse_url($url);
if (!$urls) {
return "-500";
}
$port = isset($urls['port']) ? $urls['port'] : null; //isset()判断
if (!$port) {
$port = "80";
}
$host = $urls['host'];
//----------------------------------------------//
$httpheader = "POST " . $url . " HTTP/1.0" . "\r\n" . "Accept:*/*" . "\r\n" . "Accept-Language:zh-cn" . "\r\n" . "Referer:" . $url . "\r\n" . "Content-Type:application/x-www-form-urlencoded" . "\r\n" . "User-Agent:Mozilla/4.0(compatible;MSIE 7.0;Windows NT 5.1)" . "\r\n" . "Host:" . $host . "\r\n" . "Content-Length:" . strlen($data) . "\r\n" . "\r\n" . $data;
$fd = fsockopen($host, $port);
if (!is_resource($fd)) {
return "fsockopen failed";
}
fwrite($fd, $httpheader);
stream_set_blocking($fd, TRUE);
stream_set_timeout($fd, $timeout);
$info = stream_get_meta_data($fd);
$gets = "";
while ((!feof($fd)) && (!$info['timed_out'])) {
$data .= fgets($fd, 8192);
$info = stream_get_meta_data($fd);
@ob_flush();
flush();
}
if ($info['timed_out']) {
return "timeout";
} else {
//echo $data;
$contentInfo = explode("\n\n", str_replace("\r", "", $data));
if (!strstr($contentInfo[0], "HTTP/1.1 200 OK")) {
return -10;
}
return trim($contentInfo[1]);
}
}
php用fsockopen实现post提交数据并获得返回数据的更多相关文章
- 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用
[源码下载] 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用 作者:weba ...
- 基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据
这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...
- webservice一片:其中在外线呼叫数据,查看返回数据
经Android数据被访问,返回的数据(json格公式,object数据类型:strJson) 业务需求:经webservice调用外部暴露数据并返回json数据序列化.阅读到数据库表:[SQ_Eve ...
- C#串口通信—向串口发送数据,同步接收返回数据
最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接 ...
- 【Android 复习】:从Activity中返回数据
在实际的应用中,我们不仅仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递类似,也可以采用上一讲中的四种方式来传递数据,但是一般建议采用Intent对象的方式的来返 ...
- 【解决方案】客户端请求数据较大时,nginx返回数据被截断
[问题描述]:客户端使用curl命令向nginx请求数据,当返回数据量较大时,数据被截断,客户端无法获取完整的数据. [问题原因]:nginx配置文件中包含了proxy_buffer_size.pro ...
- python3乱码问题:接口返回数据中文乱码问题解决
昨天测试接口出现有一个接口中文乱码问题,现象: 1 浏览器请求返回显示正常 2 用代码请求接口返回数据中文显示乱码 3 使用的python3,python3默认unicode编码,中文都是可以正常显示 ...
- arttemplate模板引擎有假数据返回数据多层内嵌的渲染方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- aJax提交——服务端不能用request存储数据,session存数据客户端可以接收到
aJax提交与普通提交是两种迥异的提交方式,这两种提交方式决定了客户端与服务端交互时存储.传输数据的方式也不同. aJax提交,客户端的请求数据存储在data中,服务端用request.getPara ...
随机推荐
- RCF
1. RCF: 纯c++的RPC, 不引入IDL, 大量用到boost,比较强大.2. casocklib: protobuf + asio 较完善实现3. eventrpc: protobuf + ...
- jquery方法回到顶部代码
<style> /*默认样式,主要是position:fixed实现屏幕绝对定位*/ #gotoTop{display:none;position:fixed;top:75%;left:5 ...
- dev 激活没有权限问题
用管理员身份打开 Microsoft Visual Studio 2010-->Visual Studio Tools-->Visual Studio 命令提示(2010) 然后输入一下命 ...
- [转]ubuntu 12.04添加launcher方法
[转]ubuntu 12.04添加launcher方法 http://www.cnblogs.com/Jerryshome/archive/2012/08/21/2649500.html 对ubunt ...
- android switch控件的使用
open.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Overridepublic void onCheckedChange ...
- 向Array中添加冒泡排序
冒泡排序思想 通过在无序区的相邻元素的比较和替换,使较小的元素浮到最上面. 冒泡排序实现 Function.prototype.method = function(name, func){ this. ...
- pcxFirefox 自定义
便携特性(ini设置) 把与firefox.exe同文件夹的tmemutil-sample.ini 改名为tmemutil.ini,设置如下: Portable=1 #便携式 Portable ...
- 【BZOJ】【2648】SJY摆棋子&【BZOJ】【2716】【Violet 3】天使玩偶
KD-Tree 传说中的kd树...前去膜拜了一下……写道模板题>_< 写kdtree的一些感想: 插入的时候是像可持久化线段树一样直接在最后开新节点,然后更新它所在的块.. 然而其实也是 ...
- 【BZOJ】【1028】【JSOI2007】麻将
暴力/模拟 $n\leq400$,嗯……这是一个很小的数据范围= = 判断一副牌是不是听牌并求出听什么牌太麻烦了,干脆我们直接判是不是胡牌好了~ 枚举胡的是哪张牌,然后判一下加上这张牌后是否能胡. 算 ...
- NSStream
NSStream 流是位数据通过通信路径的连续传送序列.它是单向的,从一个应用程序的角度,流可以是输入流(读操作流)或者输出流(写操作流),除了基于文件的流之外,其余的都是non-seekable的. ...