HTTP URL拆分失败

本文关键字:失败 拆分 URL HTTP | 更新日期: 2023-09-27 18:27:29

我有一个向客户端返回图像的服务器。每当返回一个图像时,客户端都会请求下一个图像(当然还有一个不同的url)。这意味着我必须获取url请求,并以某种方式将其拆分并解析,这样我的服务器才能知道请求的是哪个图像。

我目前有当前设置:

这就是处理请求的地方,正如你所看到的,我目前正在做的是专门询问图像所在的url。如果传入的请求url相同,那么图像就会被发回。我需要某种机制来请求图像的url,这取决于传入请求的url。因此,在返回图像0,0,0.png后,客户端将要求0,0,1.png,依此类推。

有什么提示我该怎么做吗?

 if (p.http_url.Equals("/MapServer/tile/0/0/0"))
        {
            Bitmap bmap = new Bitmap("../MapServer/tile/0,0,0.png");
            MemoryStream memStream = new MemoryStream();
            bmap.Save(memStream, ImageFormat.Png);
            byte[] buffer = memStream.ToArray();
            p.outputStream.Write(buffer, 0, buffer.Length);

我想应该用类似的东西来做,但我有点卡住了。

 public void urlSplitter()
    {
        string http_url_split = http_url;
        string[] splitString = http_url_split.Split('/');
        int index = splitString.Length - 1;

HTTP URL拆分失败

您可以使用正则表达式来匹配URL并在文件路径中填写匹配项:

Regex tileRegex = new Regex(@"/MapServer/tile/([0-9]+)/([0-9]+)/([0-9]+)");
var matches = tileRegex.Match(p.http_url);
if (matches.Success)
{
    string path = "../MapServer/tile/{0},{1},{2}.png";
    path = string.Format(path, matches.Groups[1].Captures[0], 
                               matches.Groups[2].Captures[0],
                               matches.Groups[3].Captures[0]);
    Bitmap bmap = new Bitmap(path);
    ...
}

您也可以部分匹配URL:

if (p.http_url.StartsWith("/MapServer/tile/"))
{
  ...
}