THTTPClient和TNetHTTPRequest 用PUT上传文件会上传两次重复上传的隐秘问题的解决

最近用delphi的THTTPClient做webDAV客户端功能。用了PUT方法来上传文件到服务器。

webDAV服务器需要用户名密码验证。于是了用了NetHTTPClient1AuthEvent 事件内触发验证需求时提供用户名和密码。

 AUserName := dav_username;
 APassword := dav_password;

运行后看起来一切正常。能上传能下载。刚开始用坚果云配合调试,上传速度较快没看出什么。后来再调试123网盘的webDAV功能时,上传速度没有坚果云快。于是想加个上传进度百分比显示。
加了百分比以后看到上传时很明显的跑了两次进度。刚开始以为哪里代码里重复调用了。排查一番发现代码正常。

于是跟踪调试,看到THTTPClient内部THTTPClient.ExecuteHTTP过程上传完成后传回了401错误,401触发后执行 State.Status := InternalState.ProxyAuthRequired;语句后重新再次上传。

于是把用户认证从AuthEvent 事件内移到html的head段。

NetHTTPRequest1.CustomHeaders['Authorization']:= 'Basic ' +EncodeString(dav_username+':'+dav_password);

再次PUT提交文件,上传一次即成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值