[python] requests 库踩坑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[python] requests 库踩坑相关的知识,希望对你有一定的参考价值。
参考技术A 因为相同的数据,Postman能够得到正常响应,说明问题出在自己调用 requests 的方式上面。而数据相同,不同的只有可能是http的headers, 所以一开始就把问题锁定在requests默认的headers不是服务器需要的 json 格式。
好吧,那我显式的指定 Content-Type ,总该可以了吧。
没想到,上面指定headers后,问题依旧。这下有点迷茫了,难道是 Content-Length 有问题? 但这个字段肯定是库自己计算获得的,我怎么查看结果呢?赶紧看了看文档。发现高级用法这一章节里介绍了 Prepared Requests 的概念,能够获取到经过计算后的headers。
可以看出,requests自己计算出的'Content-Length是114,然后自动填充到headers中。会不会是这个数值有问题呢?
明明是158字节啊,为什么requests计算出的Content-Length是114呢?
于是,我试着自己转换为json数据后,再传给data:
经过一番探索,总算成功了,看来requests库不算智能,必须手动把数据 json.dump() ,才能正确发出请求。
正当我为自己成功破案而沾沾自喜时,忽然看到 requests.post() 还有一个 json 参数. 于是我赶紧敲下:
居然,这样就成功了,我还绕了一大圈……
一次从Github向Gitee迁库踩坑记录
先上结论:gitee的lfs功能收费,直接从github迁移包含lfs管理的文件会出错
Q: 为什么要迁库呢?
A: github访问太慢了,不然我也不想费这个功夫!
gitee自带的有从github同步仓库的功能,一般来说该功能非常方便。
然而,我们的github库使用了lfs,这就是踩坑的开始。
1.跟往常一样,直接在gitee中一键导入github仓库,一切正常。我还专门新建了一个文本文件测试了一下,上传成功,以为万事大吉了。
2.过了几个小时,一位成员突然给我说clone库的时候出错了,我一脸懵逼,Error downloading object Smudge error: Error downloading这是啥错?我没问题啊!
3.我自己clone了一下,发现报了一样的错误。在网上搜了半天发现貌似是二进制文件下载出了问题,在stackoverflow中找到了答案(在这吐槽一下,百度半小时,谷歌一分钟)
In my case the SSH-authenticated repository was updated to use LFS from another client and on my side Git-LFS didn‘t know about the SSH remote-url.
What I did to fix it was the following:
Copy the URL configured in remote.origin.url (push URL for origin) to lfs.url (the URL LFS uses):
$ git config lfs.url $(git config remote.origin.url)
(If your remote is not named origin then change to your remote name.)
Then run
$ git config lfs.url
to show the URL and confirm that it does indeed contain an SSH url, and not some HTTP/HTTPS url.
Then you can
$ git pull
Done.
See also: https://github.com/git-lfs/git-lfs/issues/2661#issuecomment-335903332
简单来说就是git找不到lfs文件的位置,我去gitee上一看,果然那些大文件都是not found,然后配置一下lfs.url即可
git config lfs.url https://github.com/xxxxx.git
4.配置完成后,我重新clone了一下,很好,没有报错,二进制文件也下载了。
5.然而我想上传一个大文件时,报了一个更离谱的错误ERROR: Authentication error: Authentication required: Authorization error:
没有权限?我是仓库管理员啊!
查询后发现,这不是git权限报错,而是git lfs没有权限,我这才想起来去看看gitee支不支持lfs,结果如下:
至此,破案了,lfs功能收费,我先发个邮件去问问,后续再更......
以上是关于[python] requests 库踩坑的主要内容,如果未能解决你的问题,请参考以下文章
关于String path = request.getContextPath(); String basePath = request.getScheme()+"://"+requ