idhttp只能下载英文名的文件吗?
做了个下载工具,可是下载中文名的就会报错,下载英文名的就可以,这是怎么回事
Mystream:=TmemoryStream.Create;
aurl:='http://***/****/report/'+idhttp1.URL.PathEncode('APL提单.bmp');
idhttp1.Get(aurl,Mystream);
mystream.SaveToFile(gs_path+'\'+'APL提单.bmp');
当文件名是中文的时候会报错 EIDHTTPProtocolException with message 'Http/1.1403 Forbindden'
当文件名是全英文的就可以了
怎么回事????
[解决办法]
应该是汉字编码问题
可以用抓包工具对比下浏览器下载时的HTTP-GET包与Indy的GET包有什么不同。
通过对那个中文进行编码(gbk->utf8或UCS2->utf8)应该可以的
(浏览器能下载的,indy-http组件肯定办得到)
另外,这里没提及Delphi版本,Delphi从某个版本开始支持unicode,字串处理方式略有不同,但原理是一样的。
[解决办法]
Http/1.1403 Forbindden
是说你无权查看,是权限问题呀。
[解决办法]
gs_path+'\'+'APL提单.bmp'
这个路径不正确吧,看看gs_path是不是已经带了斜线了;
改成SaveToFile('d:\APL提单.bmp');试试
[解决办法]
idhttp肯定是可以下载中文文件名文件的。我的项目跑了几年了,没问题的。
检查楼上各位说的
[解决办法]