首页 > 解决方案 > c#下载文件给出垃圾响应

问题描述

我想从 osm 下载一个磁贴。

你可以自己做,访问 OpenStreetMap 网站:

https://www.openstreetmap.org/#map=12/41.8384/104.5730&layers=N

获得令牌后,您可以使用这样的直接链接

https://render.openstreetmap.org/cgi-bin/export?bbox=104.49886322021486,41.725461744125646,104.64717864990236,41.951064612666684&scale=1031340&format=svg

太好了,我想你明白我想要做什么。

我有 ac# 代码(Main 方法中的所有代码):

 using (WebClient client = new WebClient())
            {
        Uri url = new Uri("https://render.openstreetmap.org/cgi-bin/export?bbox=104.49886322021486,41.725461744125646,104.64717864990236,41.951064612666684&scale=1031340&format=svg");
        client.Headers.Add(HttpRequestHeader.Authorization, "render.openstreetmap.org");
        client.Headers.Add("method", "GET");
        client.Headers.Add("path", "/cgi-bin/export?bbox=28.83746292791811,59.63284874301492,30.49090531073061,60.26414816040228&scale=5000000&format=svg");
        client.Headers.Add("scheme", "https");
        client.Headers.Add(HttpRequestHeader.Accept, "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9");
        client.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br");
        client.Headers.Add(HttpRequestHeader.AcceptLanguage, "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7");
        client.Headers.Add(HttpRequestHeader.Cookie, "_osm_totp_token=651097");
        client.Headers.Add("sec-ch-ua", "\"Chromium\";v=\"88\", \"Google Chrome\";v=\"88\", \"; Not A Brand\";v=\"99\"");
        client.Headers.Add(HttpRequestHeader.Referer, "https://www.openstreetmap.org/");
        client.Headers.Add("sec-fetch-dest", "document");
        client.Headers.Add("sec-fetch-mode", "navigate");
        client.Headers.Add("sec-fetch-site", "none");
        client.Headers.Add("sec-fetch-user", "?1");
        client.Headers.Add("upgrade-insecure-requests", "1");
        client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.41 YaBrowser/21.2.0.1097 Yowser/2.5 Safari/537.36");
        client.QueryString.Add("bbox", "104.49886322021486,41.725461744125646,104.64717864990236,41.951064612666684");
        client.QueryString.Add("scale", "1031340");
        client.QueryString.Add("format", "svg");
         client.DownloadFile(url, "333.svg");
}

我想在我的电脑上下载这个磁贴和任何其他磁贴。我复制了我在 chrome 的网络选项卡中找到的所有标题,并将此响应发送到服务器上。一切都很好,但我得到的文件是垃圾。

没有我想要的 svg 数据。

我打开这个文件,看到同样的内容:

‹      н]лn·юЯ§Xla dљГЫ’JФ=Айџ(РУP쵤F–I¶г·пМp№VN–i›єЋ­  "iМ%зц}О®вЧ?јї^V·нv·XЇ&5YWнкb}№XН&хoяып™Їшю›Ч»ЫY…#W»I=Яп7гуу»»;q§Еz;;WRКsQЗ!гчЛЕкЭР@!њуOлкnq№џOjЫlцu5oіщЧGoнЭЏлч“ZVІІM…въPIUЈJ—нХ_®Л}»­—“zєЬМ§u%ї­{ФvэцчцbягъfE&б¤Ё$О{RWчсҐУ$}их OЯSUЇЇЪя¬—лнПУэvсѕЪЯoЪI}НкjЃКьєѕЩ^ґ?m§›щв•њ.oЪ]Tњю@•‡Їх9ZpЖwЧУЭ;¶„ЮИЁА¬іgRЯl—Я}Л6ћ’э[ґ‹m‰¦xфЦХnїD­qљеx;{ыќ<сЯУW$:[o¦‹ээX
ыj·Я®ЯµгХzХѕ"Эpэу©H
блЕr±щeєџі’фў’U67M‚пg<Соf{5Ѕhm]СЏО6Sє”­е%ШZ~`   лх=гХР џbнЕt3~{іЯК~_/Vг·нm»L¦’C(ЪЈюџУtAr$Бхг°\аЛШјЄ+ФьзкLЩF4.X
Uг(ђБToHЋъШ [5Ќ0RiеЖ‰(УR6X¦ЅPБy’{aи­Џr%ҐњuUD.Н­”°:H§HоќVЭ<J
ТDсьtѕ#№фў›ЕЪ§б§wР@`9Р KaТhзµЌ‹BАЙЅй  8{’іэЉРИFjћјAуХ(WrNZгxUPн`9љ®Ј‚нгҐR[\«ВЛ ^Жr%<iгINви1pд?K~хZhЌCўтО
rЌЗёxGFіЬ€¦С&amp;КuпIpZ`¤ИЯиaќДr\Ќ”SХ†cCrKюNYC@bг…УјXc„Ћ 

一切正常,不知道如何解决。有什么建议么?

标签: c#asp.net-coresvg.net-corenetwork-programming

解决方案


推荐阅读