以不同方式调用url时出现问题



我正试图使用他们根据此处页面指定的调用更新no-ip.com上的ip地址http://www.noip.com/integrate/request

到目前为止,我尝试了

    Dim webAddress As String = "http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4"
    Process.Start(webAddress)

这会产生错误附加信息:系统找不到指定的文件

我试过这个

    Dim req As System.Net.WebRequest = System.Net.WebRequest.Create("http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4")
    Dim resp As System.Net.WebResponse = req.GetResponse
    Str = resp.GetResponseStream

它会出错附加信息:无效URI:指定的端口无效。

还尝试使用带有的WebBrowser

WebBrowser1.navigate("http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4")

它给出错误附加信息:值不在预期范围内。

我认为这可能与这些控件有关不喜欢链接是如何格式化的

顺便说一句,我不想使用没有ip的客户端ip更新程序,当然我更改了链接上的详细信息:)当我在Chrome中复制和粘贴链接时,它工作正常,并按预期更改ip

更新这现在很好

    Dim username As String = HttpUtility.UrlEncode("XXX@XXX.XXX")
    Dim password As String = HttpUtility.UrlEncode("XXX")
    Dim query As String = String.Format("http://{0}:{1}@dynupdate.no-ip.com/nic/update?hostname=XXXXXX.ddns.net&myip=" & TextBox2.Text, username, password)
    Process.Start(query)

但理想情况下,我希望在不打开浏览的情况下处理代码中的请求和响应(我只是试着检查为什么我会出错,但这不是理想的解决方案)

当我尝试这个时

WebBrowser1.Navigate(query) 

它工作得很好,现在也很好,但在使用我喜欢使用的代码时仍然会出错。

    Dim req As System.Net.WebRequest = System.Net.WebRequest.Create(query)
    Dim resp As System.Net.WebResponse = req.GetResponse
    Str = resp.GetResponseStream

这一次我得到错误401未经授权的

您展示的url示例非常完美。

可能发生的情况是,在你的真实代码中,你设置的用户名或密码包含空格或非法字符,你需要对它们进行转义/编码。

您可以使用System.Web.HttpUtility.UrlEncode函数:

如果在HTTP中传递空格和标点符号等字符没有编码的流,它们可能在接收时被误解终止URL编码转换URL中不允许的字符转换为字符实体等价物

然后:

Dim username As String = HttpUtility.UrlEncode("username")
Dim password As String = HttpUtility.UrlEncode("password")
Dim query As String =
    String.Format("http://{0}:{1}@dynupdate.no-ip.com/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4/", username, password)
Process.Start(query) 

对每个可能包含非法字符的值(如果有的话)执行相同的操作,例如传递给hostname参数的值。

为了更安全起见,在地址末尾加一个/

相关内容

  • 没有找到相关文章

最新更新