短短链接会截断我的完整URL

时间:2019-02-21 15:09:02

标签: asp.net .net vb.net bit.ly

我正在使用vb.net到我的网站,并且正在尝试通过Bitly缩短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总是被截断。

知道发生了什么吗?

这是我的代码的示例:

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

1 个答案:

答案 0 :(得分:1)

请考虑您的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

您看到问题了吗?怎么应该知道&q=github等是{em> longUrl的一部分,而不是多余的参数?

修复很简单。 As the documentation says下的最佳做法|编码:

  

URL编码

     

发送到Bitly API的所有长URL必须经过URL编码,即使这些   链接已包含转义字符。有关更多信息   URL编码,请参见this Wikipedia article

相关问题