1

从我的 C# 控制台应用程序中,我想发出一个 Uri 更新请求。如下所示:

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

我尝试了以下方法:

string url = "http://username:password@dynupdate.no-ip.com/nic/update? hostname=mytest.testdomain.com&myip=1.2.3.4";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 5000;

但是,我得到了,Invalid URI: The format of the URI could not be determined.错误。

任何想法,我哪里出错了?我在 Web 浏览器中键入如上所示的完整 url,它按预期工作,但通过 C# 应用程序,它会引发异常。

还有其他方法可以实现吗?

4

3 回答 3

4

您需要创建一些凭据并将其添加到请求中,然后在不传入用户名/密码的情况下访问 URI。

有关更多信息:如何:使用 WebRequest 类请求数据(特别是有关凭据的部分)

例如;

var uri = new Uri("http://somesite.com/something");
var request = WebRequest.Create(uri) as HttpWebRequest;
request.Credentials = new NetworkCredential("myUserName","myPassword");
request.PreAuthenticate = true;
于 2012-08-13T07:12:42.703 回答
2

只要看看这个网页。这是你指的吗? http://www.no-ip.com/integrate/request/

我认为您需要将网址用作 http://dynupdate.no-ip.com/nic/update

然后发送 ChrisBint 提到的凭据。并且您需要将首选项设置为 base64 ...如果有这样的规定 + 一些标题,如文章中提到的 UserAgent。

于 2012-08-13T08:25:18.507 回答
0
Encode the URL argument, check the below example

string url = "http://www.stackoverflow.com?question=" + HttpUtility.UrlEncode("a sentence with spaces");

WebRequest r = WebRequest.Create(url);
于 2012-08-13T07:19:03.663 回答