void OnReceive_Msg(string data, string error, HttpCallbackDelegate callback) { if (!string.IsNullOrEmpty(error)) { Debug.LogError(error); return; } try { string dataStr = data.Substring(2, data.Length - 4); //remove [""] byte[] bData = GlobalFunction.ToHexByte(dataStr); MemoryStream outStream = new MemoryStream(bData); Packet packet = ProtoBuf.Serializer.Deserialize <Packet>(outStream); if (callback != null) { callback(packet); } else { MethodInfo method = typeof(HttpCallBack).GetMethod(packet.cmd.ToString()); method.Invoke(httpCallBack, new object[] { packet }); } } catch { throw; } }
public void SendMsgWithCallBack(Packet packet, HttpCallbackDelegate callback, bool isCheckHead = true) { if (null == www) { return; } MemoryStream memStream = new MemoryStream(); ProtoBuf.Serializer.Serialize <Packet>(memStream, packet); byte[] data = memStream.ToArray(); string dataStr = GlobalFunction.ToHexString(data); //ToHex ALHttpParamForm paramForm = new ALHttpParamForm(); paramForm.AddParam("data", dataStr); if (isCheckHead) { if (headData != null) { Packet headPacket = new Packet(); headPacket.cmd = Packet.EnmCmdType.CMD_CL_CHECKHEAD; headPacket.packCLCheckHead = new PacketCLCheckHead(); headPacket.packCLCheckHead.accountid = headData.accountid; headPacket.packCLCheckHead.md5 = headData.md5; MemoryStream headStream = new MemoryStream(); ProtoBuf.Serializer.Serialize <Packet>(headStream, headPacket); byte[] headByte = headStream.ToArray(); string headStr = GlobalFunction.ToHexString(headByte); paramForm.AddParam("head", headStr); } } www.HTTPRequest(szUrl, ref paramForm, OnReceive_Msg, callback, false); }
/// <summary> /// 用WWW进行http请求 /// </summary> /// <param name="_szUrl"></param> /// <param name="_ParamForm"></param> /// <param name="_delegateAck"></param> /// <param name="_bPost"></param> public bool HTTPRequest(string _szUrl, ref ALHttpParamForm _ParamForm, HTTPReqAckDelegate _delegateAck, HttpCallbackDelegate _httpCallback, bool _bPost = true) { ALWWWHTTPRequest request = new ALWWWHTTPRequest(); request.m_dwErrorNum = 0; request.m_eOptState = EHTTPOptState.eOptState_Ready; request.m_szRequestUrl = _szUrl; request.m_dwRequestId = ++m_dwRequestId; request.m_Param = new ALHttpParamForm(); request.m_Param.CloneParam(ref _ParamForm); request.m_ReqDelegate = _delegateAck; request.m_ReqCallback = _httpCallback; request.m_bPost = _bPost; if (m_bUpdating) { m_dicRequestCache.Add(request.m_dwRequestId, request); } else { m_dicRequest.Add(request.m_dwRequestId, request); } return(true); }