Проблемы кодирования WebClient vb.net - PullRequest
0 голосов
/ 14 сентября 2011

В моем приложении vb.net я взаимодействую с веб-сервисом, созданным другой группой. Это взаимодействие включало проверку номера счета. Способ, которым другая группа написала свой веб-сервис, заключается в том, что я должен нажать определенную ссылку, извлечь номер сеанса и затем использовать этот номер для последующих запросов. Проблема, с которой я сталкиваюсь, заключается в том, что когда я передаю sessionid, он должен быть заключен в {} скобки. например: "http://server/acctverify/Verification.groovy;jsessionid=${123456789}"

Проблема заключается в том, что когда я передаю вышеуказанный URL, он кодируется примерно так: http://server/acctverify/Verification.groovy;jsessionid=$%7B123456789%7D с заменой {}.

Я не понимаю, почему это происходит, и как это исправить.

Код, который я использую:

    Dim client As WebClient = New WebClient
    Dim Sessionuri As Uri = New Uri(VerifyInit)
    Dim sessionID As String = client.DownloadString(Sessionuri)
    Dim FinalUri As Uri = New Uri(VerifyPost & "{" & sessionID & "}?acctnumber=")
    Dim FinalResults As String = client.DownloadString(FinalUri)
    MessageBox.Show(FinalResults)

Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 19 ноября 2011

Существует устаревший конструктор для класса Uri, который будет препятствовать кодированию URI, когда параметр dontEscape конструктора равен True.

Как это:

Dim client As WebClient = New WebClient 
Dim Sessionuri As Uri = New Uri(VerifyInit) 
Dim sessionID As String = client.DownloadString(Sessionuri) 
Dim FinalUri As Uri = New Uri(VerifyPost & "{" & sessionID & "}?acctnumber=", true) 
Dim FinalResults As String = client.DownloadString(FinalUri) 
MessageBox.Show(FinalResults) 

Этот конструктор устарел по уважительной причине: URI, который вы пытаетесь создать, не является допустимым URI. Символы { и } должны быть закодированы. Но если вы используете несовместимый сервер, который принимает только некодированные символы, конструктор выше должен работать.

...