httr有时将URL中的“%”替换为“%25”

问题描述 投票:0回答:1

[使用httr::GET时,在某些查询中它将用安全表示%替换%25,但在其他查询中则不会。我找不到任何规则可以做到这一点。

我正在使用httr 1.4.1

示例查询替换了%(注意错误代码,并且输入的URL与返回的响应对象中的URL不同):

> httr::GET("jira.spring.io/rest/api/latest/search?jql=project=Spring%20Framework&startAt=0")
Response [https://jira.spring.io/rest/api/latest/search?jql=project=Spring%2520Framework&startAt=0]
  Date: 2020-01-16 22:57
  Status: 400
  Content-Type: application/json;charset=UTF-8
  Size: 196 B

查询未替换的位置(无错误,响应的URL与输入的相同:]

> httr::GET("issues.jenkins-ci.org/rest/api/latest/search?jql=project='WEBSITE'%20OR%20project='Infrastructure'&startAt=0")
Response [https://issues.jenkins-ci.org/rest/api/latest/search?jql=project='WEBSITE'%20OR%20project='Infrastructure'&startAt=0]
  Date: 2020-01-16 23:02
  Status: 200
  Content-Type: application/json;charset=UTF-8
  Size: 430 kB

发生了什么事?这是httr中的错误吗?还是应该在GET()调用中更改某些参数?

r httr
1个回答
1
投票

tldr; 与jira.spring.io一起使用HTTPS请求,以避免协议升级失败。


这不是R / HTTR问题。这是网站。比较HTTP(“失败%25”)和HTTPS(“成功”)的结果:

Status Code: 301 Moved Permanently
Location: https://jira.spring.io/rest/api/latest/search?jql=project=Spring%252520Framework&startAt=0
                                                                          ^^^^^

因此解决方案是使用HTTPS端点

并避免使用奇怪的目标位置。
© www.soinside.com 2019 - 2024. All rights reserved.