2014-02-11 2 views
0

Мне нужно обновить наши зоны dyndns приложением.Обновление Dyndns с http get

Их апи расположен в enter link description here

Они говорят, что я должен сделать запрос Лик ​​получить так:

GET /nic/update? hostname=yourhostname&myip=ipaddress&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG HTTP/1.0 
Host: members.dyndns.org 
Authorization: Basic base-64-authorization 
User-Agent: Company - Device - Version Number 

Как бы сделать это в C#?

Я попытался это:

String request = "/nic/update?hostname=yourhostname&myip=ipaddress&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG HTTP/1.0"; 
WebRequest webRequest = WebRequest.Create(request); 
WebResponse webResp = webRequest.GetResponse(); 
Console.WriteLine(webResp.ToString() 

Но как это сделать имя хоста и все это?

+0

Что вы имеете в виду, «как я делаю имя хоста '? –

+0

В этом примере у них есть host members.dynds.org. в моей строке запроса у меня нет этого? – Zapnologica

+0

Нет, но у вас есть другое имя хоста, указывающее на ваш IP –

ответ

1

Я просто хотел опубликовать свой код, который я получил в полном порядке, если другим может понадобиться помощь с ним в один прекрасный день!

Я разделил его на некоторые вспомогательные функции для простоты. Не пугай тебя.

/// <summary> 
/// Call this from another class to update a zone. 
/// </summary> 
/// <param name="host">The full name of the host</param> 
/// <returns></returns> 
public string Update(String host) 
{ 
    string url = BuildUrl(host, Ip); 
    return PerformUpdate(url); 
} 

Вот функция для построения URL

/// <summary> 
/// //Constructs the url to send the get request to. 
/// </summary> 
/// <param name="hostname">the hostname </param> 
/// <param name="ip">the ipaddress</param> 
/// <returns>The complete String</returns> 
private string BuildUrl(String hostname, String ip) 
{ 
    return BaseUrl + "hostname=" + hostname + "&myip=" + ip; 
} 

Вот функция, которая делает обновление:

/// <summary> 
/// Performs the actual request to the dyndns server to update the entity 
/// </summary> 
/// <param name="url">url to post</param> 
private String PerformUpdate(String url) 
{ 
    HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
    NetworkCredential creds = new NetworkCredential(Username, Password); 
    request.UserAgent = Username + " - " + Password + " - " + "0.01"; 
    request.Credentials = creds; 
    request.Method = "GET"; 
    HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
    Stream reply = response.GetResponseStream(); 
    StreamReader readReply = new StreamReader(reply); 
    return readReply.ReadToEnd(); 
} 
+0

с 'MyWebRequest content = new MyWebRequest («http://checkip.dyndns.org/»); вы также можете получить свой IP-адрес. конечно, вы должны разрезать содержимое на ip – Dwza