java %ef%bb%bf,HttpListenerContext将递归“%EF%BF%BD”添加到HttpListener.request.url

在我的应用程序中,我在一个单独的线程中不断地在后台运行 HttpListener listener . 此侦听器用于处理通过localhost端口请求的文件 . 并请求来自服务器的文件 .

监听器设置如下

listener = new HttpListener();

listener.Prefixes.Add("http://+:50003/");

listener.Start();

httpListenerThread = new Thread(RunListener);

httpListenerThread.Start();

它在线程上保持活着

while (listenerIsRunning)

{

if (listener.IsListening)

{

IAsyncResult result = listener.BeginGetContext(new AsyncCallback(HttpRequestListenerCallback), listener);

result.AsyncWaitHandle.WaitOne(1);

}

}

如果通过HttpListener请求文件,我会在回调中获得所请求的文件名,如下所示(其中 result 的类型为 IAsyncResult ,包含 object state ):

HttpListener listener = (HttpListener)result.AsyncState;

HttpListenerContext context = listener.EndGetContext(result);

string fileName = context.Request.Url.AbsolutePath.Substring(1);

这在大多数情况下都可以正常工作 . 返回按预期方式请求的文件名 . 但偶尔(并且不一致)它会将“%EF%BF%BD”追加到文件名104次,而“GP”将其关闭..看起来像这样

“%EF%BF%BD%EF%BF%BD ....%EF%BF%BD%EF%BF%BDGP”

它不会每次都发生在同一个文件中 . 并且可以在新的迭代中正确地请求它发生的文件 .

在将文件发送到HttpListener之前检查文件的名称只会生成文件名,这意味着它会在 HttpListener 或 HttpListenerContext 过程中的某个位置添加 .

一切都应该/应该使用ASCII字符集完成 .

我使用Unity的.Net 2.0子集与.net 3.5等效的运行时版本

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值