服务端代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
namespace SoccerWeb
{
/// <summary>
/// ScoreHandler 的摘要说明
/// </summary>
public class ScoreHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json;charset=UTF-8"; // "text/plain";
context.Response.AddHeader("Access-Control-Allow-Origin", "*");
context.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
JavaScriptSerializer json = new JavaScriptSerializer();
Order p1 = new Order();
p1.Name = "aa";
p1.Age = 12;
Order p2 = new Order();
p2.Name = "bb";
p2.Age = 12;
string str = json.Serialize(new List<Order>() { p1, p2 });
context.Response.Write(str);
context.Response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
客户端:
var winSize = null;
var XhrLayer = cc.Layer.extend({
ctor:function () {
if (!this._super()) {
return false;
}
return true;
this.onEnter();
},
onEnter: function() {
this._super();
var l = cc.LabelTTF.create("Get infos via XHR", "Thonburi", 16);
this.addChild(l, 1);
l.x = cc.director.getWinSize().width / 2;
l.y = cc.director.getWinSize().height - 60;
this.sendGetRequest();
this.sendPostRequest();
var l2 = cc.LabelTTF.create("Get infos via XHR2", "Thonburi", 16);
this.addChild(l, 1);
l2.x = cc.director.getWinSize().width / 2;
l2.y = cc.director.getWinSize().height - 80;
},
sendGetRequest: function() {
var that = this;
var xhr = cc.loader.getXMLHttpRequest();
var statusGetLabel = cc.LabelTTF.create("Status:", "Thonburi", 18);
this.addChild(statusGetLabel, 1);
statusGetLabel.x = cc.director.getWinSize().width / 2;
statusGetLabel.y = cc.director.getWinSize().height - 100;
statusGetLabel.setString("Status: Send Get Request to httpbin.org");
xhr.open("GET", "http://172.18.65.100:8080/SoccerWeb/ScoreHandler.ashx");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var httpStatus = xhr.statusText;
var response = xhr.responseText.substring(0, 50) + "...";
var responseLabel = cc.LabelTTF.create("GET Response (50 chars): \n" + response, "Thonburi", 16);
that.addChild(responseLabel, 1);
responseLabel.anchorX = 0;
responseLabel.anchorY = 1;
responseLabel.textAlign = cc.TEXT_ALIGNMENT_LEFT;
responseLabel.x = cc.director.getWinSize().width / 6;
responseLabel.y = cc.director.getWinSize().height / 2;
statusGetLabel.setString("Status: Got GET response! " + httpStatus);
}
};
xhr.send();
},
sendPostRequest: function() {
var that = this;
var xhr = cc.loader.getXMLHttpRequest();
var statusPostLabel = cc.LabelTTF.create("Status:", "Thonburi", 18);
this.addChild(statusPostLabel, 1);
statusPostLabel.x = cc.director.getWinSize().width / 2;
statusPostLabel.y = cc.director.getWinSize().height - 140;
statusPostLabel.setString("Status: Send Post Request to httpbin.org");
xhr.open("POST", "http://172.18.65.100:8080/SoccerWeb/ScoreHandler.ashx");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var httpStatus = xhr.statusText;
var response = xhr.responseText.substring(0, 50) + "...";
var responseLabel = cc.LabelTTF.create("POST Response (50 chars): \n" + response, "Thonburi", 16);
that.addChild(responseLabel, 1);
responseLabel.anchorX = 0;
responseLabel.anchorY = 1;
responseLabel.textAlign = cc.TEXT_ALIGNMENT_LEFT;
responseLabel.x = cc.director.getWinSize().width / 2;
responseLabel.y = cc.director.getWinSize().height / 2;
statusPostLabel.setString("Status: Got POST response! " + httpStatus);
}
else
{
cc.log(xhr.statusText);
}
};
xhr.send("test=ok");
}
});
var XhrScene = cc.Scene.extend({
onEnter:function () {
this._super();
this.addChild(new XhrLayer());
}
});
客户端打包后无法使用XMLHttpRequest,只能在网页版本中用