我在网络上使用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 文章。