C# DynDNS和无可争议的Badath反应

C# DynDNS和无可争议的Badath反应,c#,api,dyndns,C#,Api,Dyndns,我正在尝试使用DynDNS API验证用户提供的DynDNS凭据,并说这正是为了验证用户提供的DynDNS凭据。 我的想法是,我可以使用用户凭据自动更新,并查找badauth响应,并使用它来检测不正确的凭据,这听起来很完美。 问题是我得到的唯一回应是badauth。当我发送应该是好的凭证时(因为它们当前用于登录和所有操作),我会收到一个BADATH响应。这是我的密码: try { string target = string.Format( "http://{0}:{1}@

我正在尝试使用DynDNS API验证用户提供的DynDNS凭据,并说这正是为了验证用户提供的DynDNS凭据。
我的想法是,我可以使用用户凭据自动更新,并查找badauth响应,并使用它来检测不正确的凭据,这听起来很完美。
问题是我得到的唯一回应是badauth。当我发送应该是好的凭证时(因为它们当前用于登录和所有操作),我会收到一个BADATH响应。这是我的密码:

   try
   {
     string target = string.Format( "http://{0}:{1}@members.dyndns.org:8245/nic/update?hostname={2}&myip={3}",
      HttpUtility.UrlEncode( DynDnsUserName ), HttpUtility.UrlEncode( DynDnsPassword ), HttpUtility.UrlEncode( DynDnsURL ), ip );
     HttpWebRequest request = WebRequest.Create( target ) as HttpWebRequest;
     request.Method = "GET";
     request.UserAgent = company + " - " + model + " - " + firmware;
     HttpWebResponse response = request.GetResponse() as HttpWebResponse;
     Stream reply = response.GetResponseStream();
     StreamReader readReply = new StreamReader( reply );
     string returnCode = readReply.ReadToEnd();
     Trace.WriteLine( "We've validated the provided DynDNS credentials, response received: " + returnCode );
     return !returnCode.Contains( "badauth" );
   }
   catch (WebException webEx)
   {
     Trace.WriteLine( "WebException thrown: " + webEx.Message );
     if (webEx.Response != null)
     {
      Stream reply = webEx.Response.GetResponseStream();
      StreamReader readReply = new StreamReader( reply );
      Trace.WriteLine( "Actual response: " + readReply.ReadToEnd() );
     }
   }

无论我使用何种凭据,我都会收到一个抛出的WebException“远程服务器返回错误:(401)未经授权”,响应主体为badauth。有什么想法吗

{0}:{1}@。。。不适用于webrequest

你的目标只是“http://members.dynd....“,然后你做了类似的事情

NetworkCredential myCredentials = new NetworkCredential(username,passwd);

request.Credentials = myCredentials;

嗯,课程和方法表明它应该有效,但这很可能是我不正确的假设。我会调查的,谢谢。太棒了,你完全正确!尽管API文档本身一直使用Uri嵌入凭据方法,但它实际上并不起作用。切换到指定凭证的更具体的方法使一切都完美地工作。就在几周前,我遇到了这个问题。