与Bitly的短路链接正在截断我的完整URL



我在网络上使用vb.net,我正在尝试略微将我的URL缩短。到目前为止,一切都很好。现在,当我在URL中使用多个参数时,它被截断了。

URL示例:https://www.google.com/search?ei=JZJuXICFOLXaxgPqyrXYDQ&q=github&oq=github&gs_l=psy-ab.3..0i131i67j0i67j0l8.5770.6610..6785...0.0..1.193.560.5j1....3..0....1..gws-wiz.......0i71j0i131.TSeJXtGZpvc

URL结果:https://www.google.com/search?ei=JZJuXICFOLXaxgPqyrXYDQ

您可以看到,当URL找到第一个"&"。

时,URL总是被截断

知道发生了什么事吗?

这是我的代码的一个示例:

Option Infer On
Imports System.Net
Imports System.Web
Module Module1
    Sub Main()
        Dim wc = New WebClient()
        Dim login = "mylogin"
        Dim apiKey = "R_aaaaaaaaaaaaa1a11a11a11a11a1a11a1"
        Dim longUrl = System.Uri.EscapeUriString("https://www.google.com/search?ei=JZJuXICFOLXaxgPqyrXYDQ&q=github&oq=github&gs_l=psy-ab.3..0i131i67j0i67j0l8.5770.6610..6785...0.0..1.193.560.5j1....3..0....1..gws-wiz.......0i71j0i131.TSeJXtGZpvc")
        Dim request = String.Format("http://api.bit.ly/v3/shorten?login={0}&apiKey={1}&longUrl={2}&format=txt", login, apiKey, longUrl)
        Dim result = wc.DownloadString(request)
    End Sub
End Module

考虑您的request字符串的实际外观。我已经插入了可读性的线路休息,当然,真实的事情没有:

http://api.bit.ly/v3/shorten?login=mylogin
    &apiKey=R_aaaaaaaaaaaaa1a11a11a11a11a1a11a1
    &longUrl=https://www.google.com/search?ei=JZJuXICFOLXaxgPqyrXYDQ
    &q=github
    &oq=github
    &gs_l=psy-ab.3..0i131i67j0i67j0l8
        .5770.6610..6785...0.0..1.193.560.5j1....3..0....1..
        gws-wiz.......0i71j0i131.TSeJXtGZpvc
    &format=txt

您看到问题了吗?bitly应该知道 &q=github等是 longUrl的一部分,而不是额外的参数?

修复程序很简单。正如文档所说的那样,根据最佳实践|编码:

URL编码

所有发送到Bitly API的长URL都必须编码为URL,即使这些网址 链接已经包含逃脱的字符。有关有关的更多信息 URL编码,请参阅此Wikipedia 文章。

相关内容

  • 没有找到相关文章

最新更新