Выбор из выпадающего списка программно, чтобы получить значение для запроса на получение? - PullRequest
1 голос
/ 11 декабря 2011

Возможно, мне следует немного подкрепиться, чтобы объяснить, что я пытаюсь сделать.

Я пытаюсь создать приложение, которое уведомит меня за полчаса до заката.Мне нравится работать над своими чертежами в горах, но у меня есть привычка терять время и застревать там в темноте.Было бы намного проще, если бы я знал, где я буду находиться каждый день, однако из-за поездок я постоянно нахожусь в разных местах между Сакраменто и Дувром.Поэтому я хочу создать приложение, которое может программно получать данные из http://www.timeanddate.com/worldclock/sunrise.html.. Этот веб-сайт содержит раскрывающийся список, в котором выбирается местоположение, а затем он переносит вас в таблицу, которая содержит время заката для дня (и другиеинформация не относится ко мне).

Я запустил процесс через программу Fiddler и обнаружил, что он использует запрос get для значения, выбранного в раскрывающемся списке.Например, когда я выбираю США - Калифорния - Сакраменто, веб-трафик (согласно фиддлеру) выглядит следующим образом:

GET http://www.timeanddate.com/worldclock/astronomy.html?n=217 200 OK (text / html)

Итак, я думаю, что я могу передать n = 217 в веб-запросе

 WebRequest request = WebRequest.Create("http://www.timeanddate.com/worldclock/astronomy.html?n=217");        
 request.Credentials = CredentialCache.DefaultCredentials;
 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

Но проблема в том, что мне нужна моя программа для выбора Sacramento или Dover и т. Д. В коде.Я представляю себе что-то вроде

public string GetCityValue(string city)
{
    string cityvalue = null;

    if (city.Contains("Sacramento")) 
    {
        cityvalue = "217";
    }

    if (city.Contains("Dover"))
    {
        cityvalue = "217";
    }

    return cityvalue; 
}

Или, возможно, есть способ поместить все раскрывающиеся списки в список и искать в списке строку в параметре метода, в любом случае эти детали меня пока не волнуют.В основном, я просто не понимаю, как выбрать город из списка и получить таблицу на сгенерированной странице со своим собственным кодом.

Пожалуйста, дайте мне знать, если я не смог предоставить необходимую информацию и тому подобное.

Спасибо

1 Ответ

0 голосов
/ 11 декабря 2011

Это похоже на вариант использования словаря:

//setup dictionary
Dictionary<string, int> cityMapping = new Dictionary<string, int>()
{
    { "Sacramento", 217 },
    { "Dover", 218 }
};

//query dictionary:
int cityCode = cityMapping["Sacramento"];

Возможно, вы захотите поместить это сопоставление в файл XML, чтобы вам было легче обновлять и изменять его. Например, учитывая этот XML:

<CityMappings>
  <City name="Sacramento" code="217"/>
  <City name="Dover" code="218"/>
</CityMappings>

Вы можете создать свой словарь cityMapping следующим образом:

var cityMapping = XElement.Load("test.xml")
                            .Descendants("City")
                            .ToDictionary(x => x.Attribute("name").Value, 
                                          x => int.Parse(x.Attribute("code").Value));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...