Cześć, musze napisać w c# prosta usługe webowa, ktora bedzie pobierała dane z Web API NBP (kursy walut) w XML. Ma to sie odbywać na zasadzie takiej, że jest w tej usłudze podany URL ale nie taki jak gotowy podany na NBP czyli http://api.nbp.pl/api/exchangerates/rates/a/gbp/2012-01-01/2012-01-31/ tylko ten fragment a/gbp/2012-01-01/2012-01-31 ma byc jako parametry i potem ma to byc zapisane do pliku .xml. Ktoś mógłby mi pomóc, naprowadzić mnie jak to zrobic?
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:12
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:12
Największy chyba w tym ze jestem lekko zielona w C#, ale dzieki za podpowiedz! Poczytam o tym
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:12
jako argument cos w stylu odpowiednia wbudowana funkcja("URL") ale fragment ze zmiennymi czyli cos w stylu tabela=A, waluta=[gbp euro usd] itd
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:12
a cos w stylu "/"+tabela+"/"? kiepski pomysł?
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:36
Myślę, że tak będzie najprościej:
Uri url = new Uri("http://api.nbp.pl/api/exchangerates/rates/a/gbp/2012-01-01/2012-01-31/");
WebClient webClient = new WebClient();
webClient.Headers["Accept"] = @"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webClient.DownloadFile(url, "mojplik.xml");
Trzeba ustawić nagłówek bo w innym wypadku dostajemy odpowiedź w json.
Oczywiście url musisz sobie poskładać gdzieś wcześniej.
Powinno się użyć DownloadFileAsync żeby nie blokować głównego wątku, ale zakładam, że wolisz najprostsze rozwiązania.
#Edit:
Jako, że WebClient jest przestarzały to można to samo wykonać w ten sposób:
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(@"application/xml"));
var result = client.GetStringAsync(url).Result;
File.WriteAllText("mojplik2.xml", result);
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:12
a wystarczy ze napisze to jako nowa klasa i wywołam?
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:12
okej, czyli najszybciej bedzie przez apk konsolową?
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 7 lat
- Postów:12
okej, dzięki wielkie!
- Rejestracja:ponad 7 lat
- Ostatnio:ponad 7 lat
- Postów:1
Redivius napisał(a):
Myślę, że tak będzie najprościej:
Uri url = new Uri("http://api.nbp.pl/api/exchangerates/rates/a/gbp/2012-01-01/2012-01-31/"); WebClient webClient = new WebClient(); webClient.Headers["Accept"] = @"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; webClient.DownloadFile(url, "mojplik.xml");
Trzeba ustawić nagłówek bo w innym wypadku dostajemy odpowiedź w json.
Oczywiście url musisz sobie poskładać gdzieś wcześniej.
Powinno się użyć DownloadFileAsync żeby nie blokować głównego wątku, ale zakładam, że wolisz najprostsze rozwiązania.#Edit:
Jako, że WebClient jest przestarzały to można to samo wykonać w ten sposób:HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(@"application/xml")); var result = client.GetStringAsync(url).Result; File.WriteAllText("mojplik2.xml", result);
A Jak będzie pobranie pliku zip który otworzę po zalogowaniu się na strone, korzystając z HttpClient?
a/gbp/2012-01-01/2012-01-31
to jest data ?