Короткие ссылки с bitly усекают мой полный URL - PullRequest
0 голосов
/ 21 февраля 2019

Я использую vb.net для своей сети и пытаюсь сократить свой URL с помощью Bitly.Все идет нормально.Теперь, когда я использую несколько параметров в 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 голосов
/ 21 февраля 2019

Посмотрите, как на самом деле выглядит ваша строка 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 и т. Д. Являются частью longUrl, а не дополнительными параметрами?

Исправление простое. Как сказано в документации в разделе Best Practices |Кодировка:

Кодировка URL

Все длинные URL-адреса, отправляемые в Bitly API, должны быть закодированы в URL, даже если эти ссылки уже содержат экранированные символы.Для получения дополнительной информации о кодировании URL см. эту статью в Википедии .

...