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 ...
随机推荐
- ajax 无刷新文件上传
无废话,直接重点: 1:准备工作 需要4个js库 1.jquery 8以上版本 2.jquery.ui.widget.js 3.jquery.iframe-transport.js 4.jquery ...
- MVC4.0 WebApi如何设置api支持namespace
1.自定义HttpControllerSelector /// <summary> /// 设置api支持namespace /// </summary> public cla ...
- 零基础学习Linux(二)网页乱码问题
上次的博文零基础学习Linux(一)环境搭建中我们已经将Linux环境搭建完毕了,接下来我们就可以进行相关的操作了,在进行操作之前,我们先来看一下大家可能遇到的中文网页乱码问题. 1.问题演示 a)输 ...
- eclipse插件开发中全局对象的获取
转自:http://blog.csdn.net/liaomin416100569/article/details/7165425 1.获取系统默认的ShellShell shell = Platfor ...
- UISwitch swift
// // ViewController.swift // UILabelTest // // Created by mac on 15/6/23. // Copyright (c) 2015年 fa ...
- 利用while(code!=EOF){}来实现“无限”循环
#include <stdio.h>int main(){ char a,b,c; char t; while(scanf("%c%c%c",& ...
- 与电子钱包相关的APDU指令
CLS:命令报文的类别字节,class byte(类别字节) of command message(命令报文) UranusPay ED/EP: UranusPay是HB公司开发的COS,而ED是电子 ...
- 团队小组开发nabc分析
我们团队开发的项目为:牛逼的手电筒 NABC模型: 1.N:现在每个人几乎走哪,干什么都会拿着手机,而现在年轻人晚上在外面的也不少,所以手机里安装一个手电筒的APP还是很有必要的. 2.A:这学期正在 ...
- hibernate3连oracle的各种坑。。
坑一:驱动错误导致sql查询不了,升级驱动到最新版即可 2.通过构造函数封装数据时,如果报错无法实例化并且不是因为字段不对应导致的,可以试试把float改为Float之类的包装类
- 利用Shell命令获取IP地址
一 :获取单个网卡的IPv4地址,方法如下: 方法一:$/sbin/ifconfig ethX | awk '/inet addr/ {print $2}' | cut -f2 -d ":& ...