处理“&”字符包含在API调用中的字符串中(在R中)

时间:2018-03-13 13:46:48

标签: r string api

我必须调用API并使用参数

c <- as.character("hello & salut")

api_request <- paste("http://api.com/?",
                    "parameter_1=",a,
                    "&parameter_2=",b,
                    "&parameter_3=",c
                    ,sep="")

api_request <-URLencode(api_request, repeated = TRUE)

以下是网址:

print(api_request)
[1] "http://api.com/?parameter_1=48456&parameter_2=8975464&parameter_3=hello%20&%20salut"

正如你所看到的,“&amp;”参数_3中的符号仍然存在且未编码。

如何指定“&amp;”我的字符串中的符号(c)不是我请求的参数?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您需要对构成API调用URL的字符进行编码。一种选择是使用URLencode包中的utils

a <- "48456"
b <- "8975464"
c <- as.character("hello & salut")

api_request <- paste("http://api.com/?",
                    "parameter_1=",a,
                    "&parameter_2=",b,
                    "&parameter_3=",c
                    ,sep="")

url <- URLencode(api_request, reserved=TRUE)

url
[1] "http%3A%2F%2Fapi.com%2F%3Fparameter_1%3D48456%26parameter_2%3D8975464%26parameter_3%3Dhello%20%26%20salut"

Demo

请注意documentation我们需要在此设置reserved为true,因为URLencode的默认行为适用于文件网址,其中&不需要被逃脱。