我正在尝试使用PHP API来缩短网址。我试图缩短的网址包含GET参数中的网址。
网址类似于
http://www.my.domain.io/Embed.php?k=318353564&p=something&a=someone&d=true&i=http://i.imgur.com/gBlh6Zm.jpg&pop=true&popn=0
当我首次使用i
已urlencode()
的链接版本时,返回的缩短链接会将我发送到http://www.my.domain.io/Embed.php?k=318353564
,其余参数将被截断。
当我在urlencode()
参数urlencode()
后的整个链接上使用i
时,它会返回整个链接http://www.my.domain.io/Embed.php?k=318353564&p=something&a=someone&d=true&i=http://i.imgur.com/gBlh6Zm.jpg&pop=true&popn=0
,但因为参数i
未编码在链接中它只给我403错误。
当我发送完全没有编码的链接时,它会再次返回不带参数的链接。当我在整个链接上发送带有urlencode()
的链接时,它会再次返回链接的文字版本,从而导致403错误。因此,尝试编码链接的4种不同方式都没有引导我找到正确的链接。
答案 0 :(得分:3)
您需要使用“%26”而不是&符号(&)。
http://www.my.domain.io/Embed.php?k=318353564%26p=something%26a=someone%26d=true%26i=http://i.imgur.com/gBlh6Zm.jpg%26pop=true
当我使用以下GET参数查询API时:
https://api-ssl.bitly.com/shorten?version=2.0.1&login=<bitly_username>&access_token=<bitly_accesstoken>&format=json&history=1&longUrl=http://www.my.domain.io/Embed.php?k=318353564%26p=something%26a=someone%26d=true%26i=http://i.imgur.com/gBlh6Zm.jpg%26pop=true
我收到http://bit.ly/1n4OuzX之类的链接,将我重定向到原始网址。
更新: 当我将域名从“www.my.domain.io”更改为我的本地Web服务器时,它会将参数发送给它。
这是print_r:
Array
(
[k] => 318353564
[p] => something
[a] => someone
[d] => true
[i] => http://i.imgur.com/gBlh6Zm.jpg
[pop] => true
[popn] => 0
)