在我的vb.net应用程序中,我正在与另一个组编写的Web服务进行交互。此交互涉及验证帐号。另一组写他们的web服务的方式是我应该点击一个特定的URL,检索一个sessionid号,然后将该号码用于后续请求。我遇到的问题是,当我传递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)
提前感谢您的帮助。
答案 0 :(得分:0)
Uri类有deprecated constructor,当构造函数的 dontEscape 参数为True时,它将阻止对URI进行编码。
像这样:
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。必须对{
和}
字符进行编码。但是,如果您使用的是不兼容的服务器,只接受未编码的字符,则上面的构造函数应该可以工作。