微信接口开发1--向微信发送请求--获取access_token
//随便放置一个php文件在服务器上.执行该方法--调用模拟get提交---到微信-->获得微信返回的access_token
不建议自己编写模拟get提交方法.
建议直接导入微信框架LaneWeChat 中的curl.lib.php文件
01====================直接使用lanewechat框架中的模拟get提交
getaccess_tokyn.php文件
<?php
include './curl.lib.php';
define("WECHAT_APPID", 'wx7185adb8b784b701');
define("WECHAT_APPSECRET", '952524d16b184f93beef7ead9366a549');
function _getAccessToken(){
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.WECHAT_APPID.'&secret='.WECHAT_APPSECRET;
$accessToken = Curl::callWebServer($url, '', 'GET');
$accessToken['WECHAT_APPSECRET'] = '952524d16b184f93beef7ead9366a549';
var_dump($accessToken);
}
_getAccessToken();
curl.lib.php
<?php
class Curl {
private static $_ch;
private static $_header;
private static $_body;
private static $_cookie = array();
private static $_options = array();
private static $_url = array ();
private static $_referer = array ();
/**
* 调用外部url
* @param $queryUrl
* @param $param 参数
* @param string $method
* @return bool|mixed
*/
public static function callWebServer($queryUrl, $param='', $method='get', $is_json=true, $is_urlcode=true) {
if (empty($queryUrl)) {
return false;
}
$method = strtolower($method);
$ret = '';
$param = empty($param) ? array() : $param;
self::_init();
if ($method == 'get') {
$ret = self::_httpGet($queryUrl, $param);
} elseif($method == 'post') {
$ret = self::_httpPost($queryUrl, $param, $is_urlcode);
}
if(!empty($ret)){
if($is_json){
return json_decode($ret, true);
}else{
return $ret;
}
}
return true;
}
private static function _init() {
self::$_ch = curl_init();
curl_setopt(self::$_ch, CURLOPT_HEADER, true);
curl_setopt(self::$_ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt(self::$_ch, CURLOPT_FRESH_CONNECT, true);
}
public static function setOption($optArray=array()) {
foreach($optArray as $opt) {
curl_setopt(self::$_ch, $opt['key'], $opt['value']);
}
}
private static function _close() {
if (is_resource(self::$_ch)) {
curl_close(self::$_ch);
}
return true;
}
private static function _httpGet($url, $query=array()) {
if (!empty($query)) {
$url .= (strpos($url, '?') === false) ? '?' : '&';
$url .= is_array($query) ? http_build_query($query) : $query;
}
curl_setopt(self::$_ch, CURLOPT_URL, $url);
curl_setopt(self::$_ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(self::$_ch, CURLOPT_HEADER, 0);
curl_setopt(self::$_ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt(self::$_ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt(self::$_ch, CURLOPT_SSLVERSION, 1);
$ret = self::_execute();
self::_close();
return $ret;
}
private static function _httpPost($url, $query=array(), $is_urlcode=true) {
if (is_array($query)) {
foreach ($query as $key => $val) {
if($is_urlcode){
$encode_key = urlencode($key);
}else{
$encode_key = $key;
}
if ($encode_key != $key) {
unset($query[$key]);
}
if($is_urlcode){
$query[$encode_key] = urlencode($val);
}else{
$query[$encode_key] = $val;
}
}
}
curl_setopt(self::$_ch, CURLOPT_URL, $url);
curl_setopt(self::$_ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt(self::$_ch, CURLOPT_HEADER, 0);
curl_setopt(self::$_ch, CURLOPT_POST, true );
curl_setopt(self::$_ch, CURLOPT_POSTFIELDS, $query);
curl_setopt(self::$_ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt(self::$_ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt(self::$_ch, CURLOPT_SSLVERSION, 1);
$ret = self::_execute();
self::_close();
return $ret;
}
private static function _put($url, $query = array()) {
curl_setopt(self::$_ch, CURLOPT_CUSTOMREQUEST, 'PUT');
return self::_httpPost($url, $query);
}
private static function _delete($url, $query = array()) {
curl_setopt(self::$_ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
return self::_httpPost($url, $query);
}
private static function _head($url, $query = array()) {
curl_setopt(self::$_ch, CURLOPT_CUSTOMREQUEST, 'HEAD');
return self::_httpPost($url, $query);
}
private static function _execute() {
$response = curl_exec(self::$_ch);
$errno = curl_errno(self::$_ch);
if ($errno > 0) {
throw new \Exception(curl_error(self::$_ch), $errno);
}
return $response;
}
}
?>
02====================单个编写模拟get提交
<?php
define("WECHAT_APPID", 'xxxxxx');
define("WECHAT_APPSECRET", 'xxxxxxxxxxxxxxxxxxxxx');
//把填写入库的的appid.定义为常量.给url做参数使用
//定义模拟get请求
//开发者工具--文档--进入-->( 开始开发--> 获取接口凭据)--http的请求方式-->get
function http_get($url){
$curl = curl_init(); //启动一个curl回话
curl_setopt($curl,CURLOPT_URL,$url );//,设置当前curl对象的属性,要访问的地址
curl_setopt($curl,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);//模拟用户使用的浏览器
curl_setopt($curl,CURLOPT_AUTOREFERER,1);//自动设置referer
curl_setopt($curl,CURLOPT_TIMEOUT,30);//设置超时限制防止死循环
curl_setopt($curl,CURLOPT_HEADER,0);//显示返回的header区域内容
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//获取的信息以文件的形式返回
$tmpinfo = curl_exec($curl);
if(curl_errno($curl)){
return curl_error($curl);
return FALSE;
}
curl_close($curl);
return $tmpinfo;
}
$_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.WECHAT_APPID.'&secret='.WECHAT_APPSECRET;
$access_token = http_get($_url);
var_dump($access_token);
01在服务器上--模拟get请求---运行php文件-->向微信发送get请求-->获取微信返回的access_token.时.-->传递appid,appsecret--设置在公众号后台的-->已近存入微信数据库
02微信接收到--从服务器端发送的get请求-->检查库中是否存在给appid和密码--存在就随机生成一个加密 access_token
03 服务器接收到返回access_token-->缓存如文件中(不用不停的请求access_token)--失效后再请求就可以
04 获得access_token后---就可以使用微信接口了--请求微信接口时.带上access_token--微信检查access_token有效--运行请求
模拟post提交 数据
<?php
function imitate_post($url,$data){
$ch = curl_init ();
// print_r($ch); //资源类型
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, 1 );//正规的HTTP POST
curl_setopt ( $ch, CURLOPT_HEADER, 0 );//设置header头,是否包含header头,(一般不用)
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); //returntransfer 返回转换,要求结果为json字符串(或者false)
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
$return = curl_exec( $ch );
curl_close ( $ch );
//print_r($return);
return $return;
}
////////////////////////////////
$url = "http://www.cms.com/post.php";//这里换成你服务器的地址
$info = array (
'name' => 'hao' ,
'password' => '123'
);
$json = imitate_post($url ,$info);
//返回的json数据 {"access_token":"asdfaxcd132","expire":7200}
//转换成数组
$arr = json_decode($json,true);
//var_dump($arr);
echo 1;
//模拟post提交数据给微信
//就是curl 1初始化,2设置选项,3执行,4关闭.
===============本地接收测试
<?php
function mylog111($str){
file_put_contents('./mylog.txt',$str);
}
$data = json_encode($_POST); //获取全部post数据,转化成json,写入txt文件中,很多内容.content加上s
//$data = file_get_contents("php://input");
mylog111($data);
$arr = array('access_token'=>'asdfaxcd132','expire'=>7200);
echo json_encode($arr);
======================模拟get提交.就是 file_get_contents
<?php
function imitate_get($url){
$data = file_get_contents($url);
var_dump($data);
}
$url = 'http://www.cms.com/get.php';
imitate_get($url);
==========get.php
<html>
<body>
hi, iam the superman;
</body>
</html>
微信接口开发1--向微信发送请求--获取access_token的更多相关文章
- java 微信自定义菜单 java微信接口开发 公众平台 SSM redis shiro 多数据源
A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成 ...
- C#.NET微信公众账号接口开发系列文章整理--微信接口开发目录,方便需要的博友查询
前言: 涉及微信接口开发比较早也做的挺多的,有时间的时候整理了开发过程中一些思路案例,供刚学习微信开发的朋友参考.其实微信接口开发还是比较简单的,但是由于调试比较麻烦,加上微信偶尔也会给开发者挖坑,并 ...
- PHP九大接口视频教程( 支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套)
PHP九大接口视频教程( 支付宝,QQ,短信接口,微信接口开发, 支付宝即时到账接口开发三级分销全套) 需要的联系我:QQ: 1844912514 PHP九大接口视频教程( 支付宝,QQ,短信接口 ...
- 向.net后端发送请求获取数据,在前端动态填充表格
实现效果 实现步骤 通过Ajax请求的方式 1.在前端定义Table 2.通过Ajax向.net后端发送数据请求 3.在.net后端定义方法供前端调用,并返回所需的数据 4.通过构造字符串的方式,将后 ...
- 微信小程序开发 [05] wx.request发送请求和妹纸图
1.wx.request 微信小程序中用于发起网络请求的API就是wx.request了,具体的参数太多,此处就不再一一详举了,基本使用示例如下: wx.request({ url: 'test.ph ...
- 微信接口开发之高级篇系列【微信权限封装类WechatAuth】
ThinkPHP框架目录结构: <?php /** * Created by PhpStorm. * User: Tinywan * Date: 2016/9/11 * Time: 9:55 * ...
- C# 调用微信接口上传素材和发送图文消息
using Common;using Newtonsoft.Json.Linq;using System;using System.IO;using System.Net;using System.T ...
- 微信接口开发之高级篇系列【微信JS-SDK】
PHP微信公众平台开发高级篇—微信JS-SDK 第一步.绑定域名: 第二步.引入JS文件: 第三部.通过Config接口注入权限验证配置 第四部.通过Read接口处理成功验证 第五部.通过Error接 ...
- HTTP接口开发专题三(发送http请求,调用http接口的流程)
一.xml数据格式传输 1)构造xml参数:通过JAXB将java对象转换为xml 2)调用上一篇的http工具类的方法,发送请求到目的接口地址 3)返回的xml字符串结果,用JAXB进行解析成jav ...
随机推荐
- Android使用Apache的httpmime包post提交数据
/** * 启动线程向服务器post提交数据 */ public void upLoadPic(final Intent data) { ToastUtils.toastWithMessage(get ...
- SQL优化 总结 精简
索引: 考虑在 where 及 order by 涉及的列上建立索引 经常同时存取多列,且每列都含有重复值可考虑建立组合索引,且查询越频繁的字段放前面 按需使用聚集与非聚集索引,聚集不适合频繁更新.适 ...
- openstack私有云布署实践【16.2 Ubuntu1404 只有根分区镜像制作】
之所以要只有根分区镜像,是因为在创建VM或者调整云主机的硬盘大小时,它能自动扩容.无需人工介入 在原来的物理机10.40.41.1的CentOS 6.7上制作镜像. 宿主机坱要安装KVM相关软件: ...
- js--性能优化(转)
前言 一直在学习javascript,也有看过<犀利开发Jquery内核详解与实践>,对这本书的评价只有两个字犀利,可能是对javascript理解的还不够透彻异或是自己太笨,更多的是自己 ...
- [妙味Ajax]第三课:AJAX跨域解决方案:JSONP
知识点总结: JSONP(JSON with Padding): 1.script标签 2.用script标签加载资源是没有跨域问题的 在资源加载进来之前定义好一个函数,这个函数接收一个参数(数据), ...
- Sass与Compress实战:第二章
1.使用变量 Sass使用$符号来标识变量,比如$highlight-color. 1.1声明变量 Sass声明变量和CSS声明属性很像: $highlight-color : #abcdef; 这意 ...
- JS复习:第二十二章
一.高级函数 1.在任何值上调用Object原声的toString( )方法,都会返回一个[object NativeConstructorName]格式d字符串.每个类在内部都有一个[[Class] ...
- vs2012常用快捷键总结
ctrl+k+c 注释 ctrl+k+u 取消注释 ctrl+m+t 折叠代码 ctrl+t 取消折叠 ctrl+k+d 调节代码 ctrl+f 查找 ctrl+g 跳转行(一般调试的时候显示哪行 ...
- Multidimensional Arrays
Overview An array having more than two dimensions is called a multidimensional array in the MATLAB® ...
- 关于jquery选择器中:first和:first-child和:first-of-type的区别及:nth-child()和:nth-of-type()的区别
:first:选择第一个出现符合的元素 :first-child:选择限制条件中的第一个元素,并且必须和冒号前面的标签一致 :first-of-type:选择所有限制条件下的第一个冒号前面的标签元素, ...