etse Skrevet 20. mars 2012 Del Skrevet 20. mars 2012 (endret) Hei. Jeg holder på med en mobil-app hvor jeg prøver å holde kommunikasjon mellom en server og klient. Dette skjer ved at serveren er en RESTfull server, slik at jeg kan gjøre forspørsler mot resursene. For å forenkle kommunikasjonen har jeg valgt å gjøre dette over HTTP-protokollen. For å kunne skille mellom ulike brukere har jeg valgt for å gå for en autentisering, sammen med cookies. Selvfølgelig ikke helt sikkert, da cookies alltid kan sniffes. Men akkurat det er ikke så farlig, er ikke snakk om noe sensitiv informasjon. Anyway, problemer er kort at cookiene jeg setter på klienten aldri blir sendt. Serverne min kjører nå et test-scripts som bare skriver ut hele requesten med alle headers på skjermen - og jeg ser ingen av cookiene mine. Lurte derfor på om noen av dere kunne hjelpe med med å finne ut hvorfor, og forklare hva jeg gjør feil. Jeg har først laget 2 hjelpe-metoder, i hovedsak for å unngå duplisering av kode, disse ser slik ut: // Gets a standard client - set to HTTP1.1 private HttpClient getClient() { HttpParams params = new BasicHttpParams(); params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1); return new DefaultHttpClient(params); } // Gets the context with cookies to be used. This is to make each user unique private HttpContext getHttpContext(String server) { CookieStore cookieStore = new BasicCookieStore(); BasicClientCookie cookie = new BasicClientCookie("X-ANDROID-USER", "some name"); cookie.setDomain(server); cookie.setPath("/"); cookie.setVersion(1); cookieStore.addCookie(cookie); HttpContext localContext = new BasicHttpContext(); localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); return localContext; } Denne brukes så i hovedmetoden som gjør en GET-request mot en bestemt server, på en bestemt URI. // Connects to the restfull server and returns the return value (get request) private String restfullRead(URI uri, String server) { // Sets up the different objects needed to read a HttpRequest HttpClient client = this.getClient(); HttpGet request = new HttpGet(); request.setURI(uri); HttpContext context = this.getHttpContext(server); // Connects to the server and reads response try { HttpResponse response = client.execute(request, context); reader.close(); } catch (Exception e) { return ""; } Når jeg så kjører metoden mot serveren min, så ender jeg opp med en request som ser slik ut: GET /info/1 HTTP/1.1Host: 192.168.0.191:8080 Connection: Keep-Alive Her er det altså ingen cookie informasjon, som serveren min kan bruke. Noen forslag på hvorfor? Endret 20. mars 2012 av etse Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå