From 4334cb70e421495ea2eb1d4a2796715cc05d5e24 Mon Sep 17 00:00:00 2001 From: smallchi <564952747@qq.com> Date: Thu, 31 Oct 2019 17:14:14 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8Dhttp=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=AE=8C=E6=88=90=E6=98=AF=E5=B0=B1=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E8=BF=9E=E6=8E=A5=E5=AF=BC=E8=87=B4=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=A2=AB=E6=88=AA=E6=96=AD=202.=E5=A2=9E=E5=8A=A0token?= =?UTF-8?q?=E5=AF=B9QueryString=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Handlers/JT808WebAPIServerHandlerTest.cs | 17 +++++++++++++++++ .../Handlers/JT808WebAPIServerHandler.cs | 10 ++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/JT808.DotNetty.Tests/JT808.DotNetty.WebApi.Test/Handlers/JT808WebAPIServerHandlerTest.cs b/src/JT808.DotNetty.Tests/JT808.DotNetty.WebApi.Test/Handlers/JT808WebAPIServerHandlerTest.cs index 225a7b2..47bfe2e 100644 --- a/src/JT808.DotNetty.Tests/JT808.DotNetty.WebApi.Test/Handlers/JT808WebAPIServerHandlerTest.cs +++ b/src/JT808.DotNetty.Tests/JT808.DotNetty.WebApi.Test/Handlers/JT808WebAPIServerHandlerTest.cs @@ -121,6 +121,23 @@ namespace JT808.DotNetty.WebApi.Test.Handlers Assert.Equal(1, result.Data.MsgFailCount); Assert.Equal(JT808ResultCode.Ok, result.Code); } + + [Fact] + public void UriTest1() + { + string uri = JT808NettyConstants.JT808WebApiRouteTable.SessionTcpGetAll +"? token=123456"; + var uriSpan = uri.AsSpan(); + var index = uriSpan.IndexOf('?'); + var result = uriSpan.Slice(0, index).ToString(); + Assert.Equal(JT808NettyConstants.JT808WebApiRouteTable.SessionTcpGetAll, result); + } + + [Fact] + public void UriTest2() + { + var index = JT808NettyConstants.JT808WebApiRouteTable.SessionTcpGetAll.IndexOf('?'); + Assert.Equal(-1, index); + } } public static class WebExt diff --git a/src/JT808.DotNetty.WebApi/Handlers/JT808WebAPIServerHandler.cs b/src/JT808.DotNetty.WebApi/Handlers/JT808WebAPIServerHandler.cs index 9b41101..46a25fc 100644 --- a/src/JT808.DotNetty.WebApi/Handlers/JT808WebAPIServerHandler.cs +++ b/src/JT808.DotNetty.WebApi/Handlers/JT808WebAPIServerHandler.cs @@ -51,7 +51,14 @@ namespace JT808.DotNetty.WebApi.Handlers } else { - if (jT808MsgIdHttpHandlerBase.HandlerDict.TryGetValue(msg.Uri, out var funcHandler)) + var uriSpan = msg.Uri.AsSpan(); + var index = uriSpan.IndexOf('?'); + string uri = msg.Uri; + if (index > 0) + { + uri = uriSpan.Slice(0, index).ToString(); + } + if (jT808MsgIdHttpHandlerBase.HandlerDict.TryGetValue(uri, out var funcHandler)) { jT808HttpResponse = funcHandler(new JT808HttpRequest() { Json = msg.Content.ToString(Encoding.UTF8) }); } @@ -77,7 +84,6 @@ namespace JT808.DotNetty.WebApi.Handlers headers.Set(ContentLengthEntity, contentLength); // Close the non-keep-alive connection after the write operation is done. ctx.WriteAndFlushAsync(response); - ctx.CloseAsync(); } public override void ExceptionCaught(IChannelHandlerContext context, Exception exception)