Unity开发之网络一HTTP服务端实现
在前一篇介绍Http客户端的实现方式:Unity开发网络一HTTP客户端实现,下面介绍服务端 1.使用VS创建Web项目 2.添加Handler.ashx Handler.ashx.cs实现
/// <summary>
/// Summary description for Handler
/// </summary>
public class Handler : IHttpHandler
{
//常量
//应用配置信息
public const string COMMAND\_APP\_INFO = "app_info";
//服务器地址列表
public const string COMMAND\_SERVER\_LIST = "server_list";
#region 属性
//协议标识
private string _cmd;
//应用Id
private string _appId;
//设备Id
private string _deviceId;
//客户端版本
private string _appVer;
public bool IsReusable
{
get
{
return false;
}
}
#endregion
public void ProcessRequest(HttpContext context)
{
if (DNTRequest.IsPost())
{
string data = DNTRequest.GetFormString("data");
if (data.Length == 0) return;
//解析数据
Dictionary<string, string> dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
if (dict.Count == 0) return;
if (!dict.TryGetValue("cmd", out _cmd)) return;
if (!dict.TryGetValue("app\_id", out \_appId)) return;
if (!dict.TryGetValue("device\_id", out \_deviceId)) return;
if (!dict.TryGetValue("app\_ver", out \_appVer)) return;
switch (_cmd)
{
case COMMAND\_SERVER\_LIST:
_serverList();
break;
default:
break;
}
}
else
{
_write(true, "");
}
}
private void _serverList()
{
string jsonString = "{";
//temp
if (_appVer == "2.0.250")
{
jsonString += "\\"ip\\":\\"192.168.20.131\\",";
jsonString += "\\"port\\":9020,";
}
else
{
jsonString += "\\"ip\\":\\"192.168.20.131\\",";
jsonString += "\\"port\\":9010,";
}
jsonString = jsonString.TrimEnd(',');
jsonString += "}";
_write(true, jsonString);
}
#region 内部函数
private void _write(bool result, string data)
{
string jsonString = "{";
jsonString += "\\"" + "result" + "\\":\\"" + string.Format("{0}", result) + "\\",";
jsonString += "\\"" + "time" + "\\":\\"" + string.Format("{0}", DateTime.Now.Millisecond) + "\\",";
jsonString += "\\"" + "data" + "\\":" + data + ",";
jsonString = jsonString.TrimEnd(',');
jsonString += "}";
HttpContext.Current.Response.ContentType = "text/json";
HttpContext.Current.Response.Cache.SetNoStore();
HttpContext.Current.Response.Write(jsonString);
HttpContext.Current.Response.End();
}
#endregion
}
说明:
1.ProcessRequest接收到客户端请求;
2.处理请求分POST和其他方式,暂时只处理POST;
3.读取数据使用DNTRequest.GetFormString(“data”) 从Form中读取;
4.客户端的ContentType 必须设置为”application/x-www-form-urlencoded”才能读取到,否则需要读取输入流;
5.返回的数据用Json格式。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 xue_huashan@163.com
文章标题:Unity开发之网络一HTTP服务端实现
文章字数:486
本文作者:max-xue
发布时间:2018-06-22, 21:10:01
最后更新:2019-11-09, 21:55:58
原始链接:http://blog.le-more.com/2018/06/22/u3d/e6-9c-8d-e5-8a-a1-e7-ab/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。