我正在使用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
答案 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。