Toon posts:

[iPhone iOS] UIWebview met authentication popup?

Pagina: 1
Acties:

  • Def!ance
  • Registratie: Juni 2003
  • Laatst online: 06-01 16:21

Def!ance

Assumption is the mother.....

Topicstarter
Ik weet niet of hier veel mensen rondlopen die bezig zijn met iOS(iPhone) programmeren, maar ik dacht aangezien dat de taal best makkelijk te beheersen is dat er denk ik wel een paar rond lopen.

Ik ben bezig met een aantal dingen puur om te testen of ik de taal kan leren , en tot nu toe gaat het best ok, al zeg ik het zelf.

Ik ben dus bezig met een "tabbar" app waarin ik een aantal urls(UIWebView) aanroep.

2 van deze tabs zijn sites die geen geldig certificaat hebben en een login vereisen.


Uiteraard heb ik voor elke tab een aparte ViewController aangemaakt, de tabs an sich werken ook gewoon goed, en de 2 tabs die naar normale niet https sites gaan werken ook zonder problemen, het gaat dus puur om de https sites die niet inladen(uiteraard omdat er geen Authentication Challenge/Response plaatsvind).

De url aanroep vind in principe als volgt plaats :

code:
1
[Naam loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://url:port"]]];


Nu had ik na een tijdje googlen het volgende gevonden :

code:
1
2
3
4
@interface NSURLRequest (DummyInterface)
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host;
+ (void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString*)host;
@end


En in de .m dit waar ik de url aanroep moet onderstaande dan tussen.

code:
1
[NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:[url host]];



Dit zou er iig voor moeten zorgen dat hij elk certificaat moet slikken (of het toegestaan is voor de appstore laat ik even in het midden, en ook gaarne geen discussie erover).
Het lijkt er echter op alsof hij dit niet uitvoert ( dus alsof het alleen voor ios geld en niet voor iPhone iOS)


Maar ik schijn nergens met google te vinden hoe ik de Authentication Challenge en Response start/afmaak?

Wel vond ik dit stukje tekst erover
as you know, UIWebView does not provide opportunities to communicate with the server. I solved this problem this way: in the delegate method shouldStartLoadWithRequest of UIWebView I initiating another connection with NSURLConnection, and already in the method of the delegate NSURLConnection didReceiveAuthenticationChallenge processed the сhallenge from the server. Аnd in the method didReceiveResponse (if the challenge came) then again in the same UIWebView load the same URL (challenge has already been processed. Do not forget to cancel connection in didReceiveResponse, otherwise it will double the traffic.
Dit stukje tekst vond ik dus zonet, dus ik ga dit even rustig doorlezen en kijken of ik eruit komt, als mensen hier nog wellicht andere mogelijkheden weten, dan houd ik mij aanbevolen.

edit -----

ik kom net het volgende tegen wat me net iets interessanter lijkt

http://stackoverflow.com/...ial-persistence-in-iphone

[Voor 6% gewijzigd door Def!ance op 31-08-2010 10:33]

http://www.gotlive.nl | XBL : DeFiAnCeNL


  • MacWolf
  • Registratie: Januari 2004
  • Laatst online: 10-01 13:49
Voor een applicatie die ontwikkeld is bij het bedrijf waar ik werk, volstaat het gebruik van die category op NSURLRequest. Onze applicatie moet ook werken over een beveiligde verbinding en door gebruikt te maken van die "DummyInterface".

Maar als ik je code zo zie, lijkt het er op dat je de functie 'allowsAnyHTTPSCertificateForHost: niet geïmplementeerd heb, terwijl juist deze functie aangeroepen zou moeten worden op het moment dat een verbinding gemaakt gaat worden over https. Het lijkt er op dat je alleen de "setter" geïmplementeerd hebt, maar geen instance variable waar het resultaat in opgeslagen wordt en die weer wordt uitgelezen bij de "getter".

In onze applicatie is alleen de "getter" geimplementeerd, omdat wij altijd een certificaat willen accepteren over een beveiligde verbinding. Deze "getter" geeft altijd een return waarde "YES".

code:
1
2
3
+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString*)host {
    return YES; 
}


Maar als je in je code de return waarde wilt bepalen (dus niet persé altijd een certificaat accepteren), voeg dan een instance variable aan de category toe en set de waarde in je setter, lees de waarde uit in je getter.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition.



Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee