public void TestFillEntityWithXml() { //客服回调 var doc = XDocument.Parse(@" <xml> <AgentType>kf_internal</AgentType> <ToUserName>CORPID</ToUserName> <ItemCount>3</ItemCount> <PackageId>3156175696255</PackageId> <Item> <FromUserName><![CDATA[UserID]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[test message]]></Content> <MsgId>1234567890123456</MsgId> <Receiver> <Type>userid</Type> <Id>lisi</Id> </Receiver> </Item> <Item> <FromUserName><![CDATA[UserID]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[this is a url]]></PicUrl> <MediaId><![CDATA[media_id]]></MediaId> <MsgId>1234567890123456</MsgId> <Receiver> <Type>userid</Type> <Id>lisi</Id> </Receiver> </Item> <Item> <FromUserName><![CDATA[UserID]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> </Item> </xml>"); var reqPack = new RequestPack(); reqPack.FillEntityWithXml(doc); Assert.AreEqual(AgentType.kf_internal, reqPack.AgentType); Assert.AreEqual("CORPID", reqPack.ToUserName); Assert.AreEqual(3, reqPack.ItemCount); Assert.AreEqual(3156175696255, reqPack.PackageId); Assert.IsNotNull(reqPack.Items); Assert.AreEqual(3, reqPack.Items.Count); }
async Task <MHttpResponse> GetResponseAsync(Func <MHttpStream, Task> func) { while (true) { try { var pack = new RequestPack(CancellationToken.None, func); await m_getMainHtml.WriteAsync(pack).ConfigureAwait(false); return(await pack.Task.ConfigureAwait(false)); } catch (IOException) { } catch (MHttpNotImplementedException) { //这个地方主要是因为服务器返回的408响应没有长度,通过断开连接指示长度,相关的逻辑没有写 } } }