Avatar billede sandrasmurf Nybegynder
22. januar 2015 - 10:50 Der er 3 kommentarer og
1 løsning

Web Service med Query parameters

Hej eksperter

Jeg ville meget gerne hente observationsdata fra en Cisco webservice gennem C# i xml format. Da der er store mængder data ville jeg også gerne specificere en fra og til dato i min query.

Det er her kæden falder :-)

Jeg har forsøgt at opstille en URI på følgende måde ved at tilføje locatedaftertime og angive en værdi. Uri.EscapeUriString ser ud til at erstatte mellemrum med %20.

string uri = Uri.EscapeUriString("https://xx.xx.xx.xx/api/contextaware/v1/location/history/client?locatedAfterTime=2015-01-21 00:00:00");

Dette giver desværre en 404 Not Found. Jeg har forsøgt adskillige formater på timestamp, men jeg har ikke ramt plet endnu.

Den eneste hjælp der er i dok er følgende

Parameter    Description
locatedAfterTime    Timestamp
locatedBeforeTime    Timestamp

Har i  bud på, hvordan jeg kan skrive et "timestamp" som et query parameter i en URI.

Bonus info: Web Service bruger følgende format, når den returnerer datatimes -> "2015-01-21T00:09:50.015+0100"
Avatar billede arne_v Ekspert
22. januar 2015 - 15:34 #1
1) proev at erstatte det mellemrum med %20
2) proev mes det angivne format
Avatar billede sandrasmurf Nybegynder
26. januar 2015 - 22:52 #2
Det lykkedes mig at få hul igennem med formatet
"2014-12-28T00%3A00%3A00.000%2B0100"

Brugte metoden Uri.EscapeDataString. Der skulle også gøres noget ved kolon og plus tegn, men mellemrum og %20 var en del af svaret.

Smid et svar Arne.

Her er til orientering hvordan jeg fik kaldt webservice via kode. Fandt aldrig ud af af tidszone delen, så den måttet klares med string.replace.

DateTime curDate = new DateTime(2014, 12, 28);

string queryVal = "xxxxT00:00:00.000+0100".Replace("xxxx", curDate.Year.ToString("0000")+"-"+ dt.Month.ToString("00")+"-"+dt.Day.ToString("00"));

queryVal = Uri.EscapeDataString(queryVal);

string uri = "https://xx.xx.xx.xx/api/contextaware/v1/location/history/clients?locatedAfterTime=" + queryVal;
Avatar billede arne_v Ekspert
26. januar 2015 - 23:44 #3
Jeg tror at hardcoded +0100 vil give problemer under sommer tid!

Du kunne proeve:

curDate.Date.ToString("yyyy-MM-ddTHH:mm:sszz00")

(den kan ikke haandtere tidzoner som ikke har et helt antal timers offset, men de er sjaeldne)
Avatar billede arne_v Ekspert
26. januar 2015 - 23:45 #4
Og et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester