php 模拟POST|GET操作实现代码

最近开发social game,发现使用这个东西还是比较平凡,这里做个总结,一来为自己留点记忆,另外希望对大家有帮助.

首先来看看需求,如果我们开发facebook上social game,需要调用它的接口来获得用户在facebook上的好友信息。这个时候我们就要访问facebook提供的一个地址呢,当然你在访问他的时候,他需要对你的访问做验证,防止非法请求。这个时候就得向其post|get一些参数。
如下面的地址:


代码如下:

$url_with_get= "http://api.facebook.com/restserver.php?method=facebook.friends.get&session_key=&api_key=1232121311&v=1.0";
$post = array('sig'=>12312123234353);

怎么样从这个地址中获得数据,简单地介绍一下下面的代码:


代码如下:

if(function_exists('curl_init'))
{
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url_with_get);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $result = curl_exec($ch);
  curl_close($ch);
}
else
{
  $content = http_build_query($post)
  $content_length = strlen($content);
  $context =
  array('http' =>
array('method' => 'POST',
'user_agent' => $user_agent,
'header' => 'Content-Type: ' . $content_type . "\r\n" .
'Content-Length: ' . $content_length,
'content' => $content));
$context_id = stream_context_create($context);
$sock = fopen($url_with_get, 'r', false, $context_id);
$result = '';
if ($sock)
  {
    while (!feof($sock))
  $result .= fgets($sock, 4096);
  fclose($sock);
}
return $result;
}
}

上面的代码使用两种方式来调facebook的接口,第一种县判断用户的环境是否开启了curl库,开启了这个库,就采用这种方式来获取请求。里面详细的参数讲解大家可以参考手册。
这里提示一点,由于我们通常情况下需要获得调用接口的返回结果,所以要设置CURLOPT_RETURNTRANSFER这个值,将结果返回到变量中。
第二种方式是直观,将url请求转化为文件流来处理。

(0)

相关推荐

  • php自定义类fsocket模拟post或get请求的方法

    本文实例讲述了php自定义类fsocket模拟post或get请求的方法.分享给大家供大家参考.具体如下: zsocket.class.php文件如下: <?php class ZSocket { /* * Init */ private function _fsockopen($host, $port, &$errno, &$errstr, $timeout){ $ip = @gethostbyname($host); $s = @socket_create(AF_INET, SO

  • PHP stream_context_create()作用和用法分析

    作用:创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置.代理服务器.请求方式.头信息设置的特殊过程. 函数原型:resource stream_context_create ([ array $options [, array $params ]] ) 用法 例子一: 复制代码 代码如下: <?php $opts = array( 'http-->array( 'method'=>"GET", 'he

  • PHP使用stream_context_create()模拟POST/GET请求的方法

    本文实例讲述了PHP使用stream_context_create()模拟POST/GET请求的方法.分享给大家供大家参考,具体如下: 有时候,我们需要在服务器端模拟 POST/GET 等请求,也就是在 PHP 程序中去实现模拟,改怎么做到呢?或者说,在 PHP 程序里,给你一个数组,如何将这个数组 POST/GET 到另外一个地址呢?当然,使用 CURL 很容易办到,那么如果不使用 CURL 库,又该怎么办呢?其实,在 PHP 里已经有相关的函数实现了,这个函数就是接下来要讲的 stream_

  • 利用PHP fsockopen 模拟POST/GET传送数据的方法

    使用php可以模拟 post 和 get 传送数据到别的网页或站点 $arr=array( 'user'=>'test', 'password'=>'' ); sock_get($post_url,$arr); sock_post($post_url,$arr); //fsocket模拟get提交 function sock_get($url,$query=array()){ $query_str = http_build_query($query); $<span id="_

  • PHP CURL模拟GET及POST函数代码

    复制代码 代码如下: <?php function vcurl($url, $post = '', $cookie = '', $cookiejar = '', $referer = ''){ $tmpInfo = ''; $cookiepath = getcwd().'./'.$cookiejar; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_USERAGENT,

  • 使用PHP Socket 编程模拟Http post和get请求

    这里给大家分享一段使用PHP Socket 编程模拟Http post和get请求的代码,非常的实用,结尾部分我们再讨论下php模拟http请求的几种方法. 复制代码 代码如下: <?php /**  * 使用PHP Socket 编程模拟Http post和get请求  * @author koma  */ class Http{     private $sp = "\r\n"; //这里必须要写成双引号     private $protocol = 'HTTP/1.1';

  • php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)

    那么如果考虑突破防盗链的措施,就需要考虑在 HTTP_REFERER 上面做手脚了.PHP 脚本中对应的变量是 $_SERVER['HTTP_REFERER'] ,它存储了 HTTP_REFERER 的值. 由于直接访问目标 URL 资源已经被上述防盗链的措施给屏蔽,所以我们需要个类似网关的玩意去获取.说白了就是编写已经包装过的 HTTP 头的 PHP 脚本. 下面是简单的函数实现: 复制代码 代码如下: function getRemoteFile($url, $refer = '') { $

  • PHP stream_context_create()函数的使用示例

    stream_context_create()函数是用来 创建打开文件的上下文件选项 ,用于fopen(),file_get_contents()等过程的超时设置.代理服务器.请求方式.头信息设置的特殊过程. 比如说,上篇php教程中gd库实现下载网页所有图片中,第10行: 利用了stream_context_create()设置代理服务器: 复制代码 代码如下: //设置代理服务器 $opts = array('http'=>array('request_fulluri'=>true));

  • php中用socket模拟http中post或者get提交数据的示例代码

    废话不多说.直接上代码:sock_post.php: 复制代码 代码如下: <?phpfunction sock_post($url, $data='') {  $url = parse_url($url);  $url['scheme'] || $url['scheme'] = 'http';  $url['host'] || $url['host'] = $_SERVER['HTTP_HOST'];  $url['path'][0] != '/' && $url['path']

  • php 模拟POST|GET操作实现代码

    最近开发social game,发现使用这个东西还是比较平凡,这里做个总结,一来为自己留点记忆,另外希望对大家有帮助. 首先来看看需求,如果我们开发facebook上social game,需要调用它的接口来获得用户在facebook上的好友信息.这个时候我们就要访问facebook提供的一个地址呢,当然你在访问他的时候,他需要对你的访问做验证,防止非法请求.这个时候就得向其post|get一些参数. 如下面的地址: 复制代码 代码如下: $url_with_get= "http://api.f

  • python模拟鼠标拖动操作的方法

    本文实例讲述了python模拟鼠标拖动操作的方法.分享给大家供大家参考.具体如下: pdf中的书签只有页码,准备把现有书签拖到一个目录中,然后添加自己页签.重复的拖动工作实在无趣,还是让程序帮我实现吧,我可以喝点水,休息一下了 1. Python代码 复制代码 代码如下: # # _*_ coding:UTF-8 _*_ __author__ = 'wp' import win32api import win32con import win32gui from ctypes import * i

  • python爬虫之模拟登陆csdn的实例代码

    python模拟登陆网页主要使用到urllib.urllib2.cookielib及BeautifulSoup等基本模块,当然进阶阶段我们还可以使用像requests等更高级一点的模块.其中BeautifulSoup模块在匹配html方面,可以很好的代替re,使用起来更方便,对于不会使用正则的人来说是福音. 本文使用python2.7 原理 模拟登陆前,我们需要先知道csdn是如何登陆的.我们通过google chrome浏览器先来分析下: 1.chrome浏览器用F12或ctrl+shift+

  • 易语言仿按键精灵录制键盘鼠标操作的代码

    DLL命令表 .版本 2 .DLL命令 取按键状态, 短整数型, "user32.dll", "GetAsyncKeyState" .参数 鼠标键, 整数型 .DLL命令 取鼠标位置, 整数型, "user32.dll", "GetCursorPos" .参数 当前鼠标位置, 鼠标位置, 传址 .DLL命令 模拟鼠标按键, , , "mouse_event" .参数 鼠标动作, 整数型 .参数 水平位置,

  • SELENIUM自动化模拟键盘快捷键操作实现解析

    这篇文章主要介绍了SELENIUM自动化模拟键盘快捷键操作实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 平常我们会用到很多快捷键,那么selenium如何来模拟快捷键操作呢.下面看看下常用快捷键的操作.首先使用快捷键需要导入以下这个包 from selenium.webdriver.common.keys import Keys 然后在通过Keys去调用一些方法,如: 全选 send_keys(Keys.CONTROL,'a') 复制

  • java使用FFmpeg合成视频和音频并获取视频中的音频等操作(实例代码详解)

    FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序. ffmpeg命令参数如下: 通用选项 -L license -h 帮助 -fromats 显示可用的格式,编解码的,协议的... -f fmt 强迫采用格式fmt -I filename 输入文件 -y 覆盖输出文件 -t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持 -ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持 -title

  • Python使用Selenium模拟浏览器自动操作功能

    概述 在进行网站爬取数据的时候,会发现很多网站都进行了反爬虫的处理,如JS加密,Ajax加密,反Debug等方法,通过请求获取数据和页面展示的内容完全不同,这时候就用到Selenium技术,来模拟浏览器的操作,然后获取数据.本文以一个简单的小例子,简述Python搭配Tkinter和Selenium进行浏览器的模拟操作,仅供学习分享使用,如有不足之处,还请指正. 什么是Selenium? Selenium是一个用于Web应用程序测试的工具,Selenium测试直接运行在浏览器中,就像真正的用户在

  • Vue模拟响应式原理底层代码实现的示例

    目录 1.Vue.js功能: 2.Observer.js功能(数据劫持): 3.Compiler.js功能: 4.Dep.js功能: 5.Watcher.js功能: 整体分析Vue的基本结构如下图所示:(备注:完整代码github地址https://github.com/1512955040/MiniVue) 上图中,为我们模拟最小vue的整体结构,首先创建一个vue类型,它负责把data中的成员注入到vue实例中,并且转化成getter/setter,observer的作用是数据劫持,对dat

  • C++模拟实现vector的示例代码

    目录 一.迭代器 定义 普通迭代器 const类型迭代器 二.构造类 构造函数 拷贝构造函数 赋值运算符重载 析构函数 三.容量相关操作 size.capacity empty resize reserve 三.元素访问 [ ]重载 front back 四.修改类接口 push_back pop_back insert erase clear swap 五.成员变量 一.迭代器 定义 vector类型的迭代器就是原生态的指针,对T*进行重命名即可 typedef T* iterator; ty

  • C++模拟实现string的示例代码

    目录 一.std::swap和std::string::swap的区别 二.string的默认构造函数 1.构造函数 2.拷贝构造 3.赋值运算符重载 4.析构函数 三.string中的小接口 四.遍历接口的实现 1.对operator[]进行重载 2.迭代器 五.reserve和resize 六.插入删除查找相关接口 1.push_back.append.+= 2.insert和earse 3.find 七.流插入和流提取 八.模拟实现的string整体代码 一.std::swap和std::

随机推荐