从我的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.
错误。
任何想法,我哪里出错了?我将如上所示的完整URL输入到Web浏览器中,它按预期工作,但是通过C#应用程序,它会引发异常。
还有其他方法可以实现吗?
答案 0 :(得分:4)
您需要为请求创建并添加一些凭据,然后在不传递用户名/密码的情况下访问URI。
有关详细信息:How to: Request Data Using the WebRequest Class(特别是有关凭据的部分)
例如;
var uri = new Uri("http://somesite.com/something");
var request = WebRequest.Create(uri) as HttpWebRequest;
request.Credentials = new NetworkCredential("myUserName","myPassword");
request.PreAuthenticate = true;
答案 1 :(得分:2)
看看这个网页。这是你指的是什么? http://www.no-ip.com/integrate/request/
我认为你需要使用url作为 http://dynupdate.no-ip.com/nic/update
然后发送ChrisBint提到的凭据。你需要将首选项设置为base64 ...如果有一个规定 +文章中提到的一些像UserAgent这样的标题。
答案 2 :(得分: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);