egret踩坑,http请求返回IOError问题解决

这几天用白鹭引擎做游戏开发的时候用到了白鹭自带的HTTP请求API发现在请求自己的阿里云服务器的时候,API始终返回IOError错误,网上找了很多资料,也没有一个正面的回答.最后自己一遍遍尝试,终于发现.原来是服务器跨域的问题.

例如使用:

var request = new egret.HttpRequest(); request.responseType = egret.HttpResponseType.TEXT;
request.open(“http://huangyi.cc”,egret.HttpMethod.GET);
request.setRequestHeader(“Content-Type”, “application/x-www-form-urlencoded”);
request.send();
request.addEventListener(egret.Event.COMPLETE,this.onGetComplete,this);
request.addEventListener(egret.IOErrorEvent.IO_ERROR,this.onGetIOError,this);
request.addEventListener(egret.ProgressEvent.PROGRESS,this.onGetProgress,this);

使用上面的代码进行http访问http://huangyi.cc域名,假如此域名的服务器没有允许跨域访问,则白鹭的API会返回IO_ERROR错误也就是会执行this.onGetIOError函数.

这个时候就要修改服务器的配置比如在nginx服务器上:

Linux下找到nginx的配置文件然后用VI编辑器编辑它.

vi /etc/nginx/nginx.conf

加入如下代码

http {
  ###start####
  add_header Access-Control-Allow-Origin *;
  add_header Access-Control-Allow-Headers X-Requested-With;
  add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
  ###end ###
}

:wq!保存

service nginx restart 重启nginx即可。

在apache服务器上如下配置:

1.首先找到 httpd.conf 文件

找到 #LoadModule headers_module modules/mod_headers.so

把#注释符去掉(也有可能已经默认去掉了)

目的是开启apache头信息自定义模块

2.找到你的虚拟主机文件 注意是被跨域的网站的 具体内容是这样的文件


<Directory "E:/laragon/www/(你的本地地址)">
    AllowOverride All
    Require all granted
</Directory>

然后在这段内容里面加上如下:

对所有域名开放

Header set Access-Control-Allow-Origin * (这样加上一行)

对指定域名开放

Header set Access-Control-Allow-Origin http://www.***.com (或者这样加上一行)

OK,跨域问题搞定

微信自动点赞工具

  朋友圈的里面的动态更新太快,都没来得及看就被新的动态覆盖了,如果不给点赞可能很多朋友会以为我不关注他们呢,所以突发奇想,想要用按键精灵来做一个微信朋友圈自动点赞的工具.

于是利用之前学习到的按键精灵和MQ语言的知识轻轻松松就开发出来了哈哈! 

   

         

这个脚本现在只能适应在小米5 分辨率的手机上,因为我的安卓手机是小米5,如果要适应其他手机,其实只需要更改一下识别的坐标就可以了.

        

上脚本代码吧!

        

小米5版本:

Dim screenX,screenY,deviceID,colorDep,shijian
screenX = GetScreenX()
screenY = GetScreenY()
colorDep = GetScreenColorDep()
deviceID = GetDeviceID()

Dim dTime=1000

Dim dlTime=2000

Dim cTime=500 

Sub 信息提示(内容)
    TracePrint 内容
    ShowMessage 内容
    Delay dTime
End Sub

Sub 单击(x, y,含义)
Touch x, y, cTime
TracePrint 含义
Delay dTime
End Sub

Sub 单击T(x,y,t,含义)
Touch x,y,t
TracePrint 含义
Delay dTime
End Sub

Call 信息提示("启动微信~")
RunApp "com.tencent.mm"
Delay dlTime

Call 单击(342, 1467, "单击第一个微信")

Call 单击(672, 1830, "单击发现")

Call 单击(350, 330, "单击朋友圈")

While True
        
    Dim intX,intY
	FindMultiColor 978,589,1045,1248,"B09385","-13|-2|F8F8F8,10|-1|F8F8F8,-32|-1|B09385,
	19|0|B09385,-4|12|B09385,-5|-15|B09385,-21|-15|B09385,-24|17|B09385,17|-18|B09385",
	0,0.9,intX,intY
	If intX > -1 And intY > -1 Then
		Call 单击(intX, intY, "单击")	
		FindMultiColor 532,437,572,1287,"FFFFFF","7|17|F4F3F3,14|20|3D3B34,
		0|22|3D3B34,17|-2|FFFFFF,24|16|3D3B34,-9|15|FFFFFF,19|29|FFFFFF,9|31|3D3B34,
		9|-1|615F59",0,0.9,intX,intY
		If intX > -1 And intY > -1 Then
			Call 单击(intX, intY, "单击点赞")
		End If		
	End If
	If CmpColorEx("541|1876|DADADA,32|1821|F8F8F8,958|1825|F8F8F8,25|1769|D3D3D3,
	588|1769|D3D3D3,1060|1769|D3D3D3,759|1876|E1E1E1,561|1120|FFFFFF",0.9) = 1 Then
	   Exit While
	End If
	Swipe 1000, screenY / 2, 1000, screenY / 2 - 400
    Delay 1000
Wend

   

海马安卓模拟器版:

Dim screenX,screenY,deviceID,colorDep,shijian
screenX = GetScreenX()
screenY = GetScreenY()
colorDep = GetScreenColorDep()
deviceID = GetDeviceID()

Dim dTime=1000

Dim dlTime=2000

Dim cTime=500 

Sub 信息提示(内容)
    TracePrint 内容
    ShowMessage 内容
    Delay dTime
End Sub

Sub 单击(x, y,含义)
Touch x, y, cTime
TracePrint 含义
Delay dTime
End Sub

Sub 单击T(x,y,t,含义)
Touch x,y,t
TracePrint 含义
Delay dTime
End Sub

Call 信息提示("启动微信~")
RunApp "com.tencent.mm"
Delay dlTime

Call 单击(450, 1220,"单击发现")

Call 单击(250, 230, "单击朋友圈")

While True
        
    Dim intX,intY
	FindMultiColor 651,235,699,813,"B09385","-8|0|F8F8F8,8|1|F8F8F8,-19|2|B09385,-1|9|B09385"
	,0,0.9,intX,intY
	If intX > -1 And intY > -1 Then
		Call 单击(intX, intY, "单击")
		
		FindMultiColor 306,159,380,955,"3F3A39","24|-2|3F3A39,2|33|3F3A39,
		24|-26|3F3A39,48|8|3F3A39,23|21|3F3A39,44|4|FFFFFF,39|-8|C9C8C8,49|-3|FFFFFF,
		53|1|C5C4C4",0,0.9,intX,intY
		If intX > -1 And intY > -1 Then 
		    Call 单击(intX, intY, "单击点赞")
		End If

		//Call 单击(intX-367, intY, "单击点赞")
	End If
	
	If CmpColorEx("360|1249|DADADA,117|1249|F5F5F5,624|1251|EDEDED,363|1179|D3D3D3,
	632|1216|F8F8F8,31|1236|F8F8F8,355|1215|F8F8F8,165|1213|F8F8F8,672|1223|F8F8F8,
	315|1264|F8F8F8",0.9) = 1 Then
	    Exit While
	End If
	
	Swipe screenX / 2, screenY / 2, screenX / 2, screenY / 2 - 300
    Delay 1000
Wend

 如果你没有安卓手机可以试试,安装模拟器哦 把模拟器的分辨率设置到720*1280 的就可以了 ,快开始你的自动化之旅吧!

 如果你还不会使用按键精灵,请看我的这篇文章 http://huangyi.cc/?p=752 

微信小程序

   今天研究了一下微信小程序,他的设计还是很巧妙的.通过开发文档还是看得非常详细的.

   腾讯的目的是为了在微信里面建立它的APP生态圈,以后我们的手机上可能就不需要再安装这么多APP了,直接进入微信就可以享受到想要的服务.这个野心是非常大的.

   不过既然腾讯开发出了这么一套框架就肯定会花大力去推广的而且肯定会有一波红利等着我们,我需要能抓住这一波.

他的架构非常简单,分为视图层和逻辑层当然你也可以再分出一个数据层.

        小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上。框架的核心是一个响应的数据绑定系统。整个系统分为两块视图层(View)和逻辑层(App Service)框架可以让数据与视图非常简单地保持同步。当做数据修改的时候,只需要在逻辑层修改数据,视图层就会做相应的更新

         虽然现在只发布了200个开发的内测账号,但是普通的没有账号的也可以使用开发工具开发的,只是部分的API会受限制而已,只要下载安装开发工具新建第一个项目时选择 无APPID 就可以实现普通的开发了.

QQ截图20161101232153.png

    它的结构如下:

QQ截图20161101232240.png

        

这里面包括了所有用到的开发编译和调试工具,其中一个小程序项目必须要有app.js,app.json,app.wxss 这个3个文件而且必须放在根目录下其中,.js后缀的是脚本文件,.json后缀的文件是配置文件,.wxss后缀的是样式表文件。微信小程序会读取这些文件,并生成小程序实例。

 

  1. app.json 是对整个小程序的全局配置。我们可以在这个文件中配置小程序是由哪些页面组成,配置小程序的窗口背景色,配置导航条样式,配置默认标题。

  2. app.wxss 是整个小程序的公共样式表。我们可以在页面组件的 class 属性上直接使用 app.wxss 中声明的样式规则。

  3. app.js是小程序的脚本代码。我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。调用框架提供的丰富的 API,如本例的同步存储及同步读取本地数据。

    更多的教程和API可以从 http://www.itlnk.com/  网站查询