unity3D与web交互初篇(一)

最近项目有客服系统的需求,任务分配到我头上,第一次写没什么经验,查阅了一天的资源,磕磕碰碰总算是写出来了,大概记录一下流程和思路。

首先访问web方法,一般都是用WWW类来访问。代码很简单。

using LuaInterface;
using System;
using System.Collections;
using System.Security.Cryptography;
using System.Text;
using UnityEngine;


public static class GMMessage
{
    //发送post请求
    public static void SendWWWPost(string url, WWWForm form, LuaFunction func)
    {
        Helper.mainLogicObj.GetComponent<FPS>().StartCoroutine(LoadWWWPost(url, form, func));
    }
    public static IEnumerator LoadWWWPost(string url, WWWForm form, LuaFunction func)
    {
        // Start a download of the given URL;
        WWW www = new WWW(url, form);


        // Wait for download to complete
        yield return www;
        func.Call(www);


    }
}
这里我写了一个简单的接口,下面这行代码的是要用到协程,但如果不继承MonoBehaviour类就不使用协程,就算继承了,也要挂载到GameObject上才行,由于这个接口逻辑是和UI无关的,所以这里借用FPS脚本的协程
Helper.mainLogicObj.GetComponent<FPS>().StartCoroutine(LoadWWWPost(url, form, func));
具体的业务逻辑全部放在Lua里:

GMDataCenter = {}

local key = 'mokylin'

GMmsgType ={
        Submit = 1, --表单提交  
    }

local urlList = {
        add = 'http://cs.mokylin.com:8081/css/xyz/cssystem/add',
    }
--提交GM工单
function GMDataCenter.SubmitForm(list)
    --判断表单内容
    if Helper.GetStringLength(list.content) < 20 then
        HelperL.AddAMessageTip("内容不能少于20个字")
        return
    end
    if Helper.GetStringLength(list.title) < 5 then
        HelperL.AddAMessageTip("标题不能少于5个字")
        return
    end
    local url = urlList["add"]

    local signStr = list.agent_id..list.game_zone_id..list.time_stamp..list.user_account..list.user_id..key
    local sign = Helper.getMD5Str(signStr)

    local form = UnityEngine.WWWForm.New()
    form:AddField("content", list.content);
    form:AddField("money_total", list.money_total);
    form:AddField("user_nickname", list.user_nickname);
    form:AddField("question_type", list.question_type);
    form:AddField("title", list.title);
    form:AddField("vip", list.vip);
    form:AddField("agent_id", list.agent_id);
    form:AddField("game_zone_id", list.game_zone_id);
    form:AddField("time_stamp", list.time_stamp);
    form:AddField("user_account", list.user_account);
    form:AddField("user_id", list.user_id);
    form:AddField("sign", sign);

    GMMessage.SendWWWPost(url,form,GMDataCenter.SubmitFormCallBack)
end
function GMDataCenter.SubmitFormCallBack(www)
    if www ~= nil then
        local content = json.decode(www.text)
        if content == nil then print("content == nil") return end
        if content.status ~= 1 then
            print(content.status)
            print(content.info)
            HelperL.AddAMessageTip("提交失败,请检查网路")
            return
        end
        local parm = {
            msgType = GMmsgType.Submit,
            desc = content.info,
        }
        HelperL.AddAMessageTip("发送成功")
        EventManager.Fire(EventID.GMReturnMsgEvent, parm)
    end
end
逻辑还是很简单的,如果真的要实现那种在线客服,及时通讯的效果,还是稍微复杂一些,以后实现了会持续更新。


  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值