2009-10-20 4 views
5

Używam klasy ASIHTTPRequest w celu komunikacji z usługą sieci Web i uzyskania odpowiedzi. W ten sposób mogę wysłać żądanie do serweraiPhone i ASIHTTPRequest - Nie można uruchomić połączenia HTTP

NSString *str = [NSString stringWithFormat:@"%@verifyLogin.json", serverUrl]; 
NSURL *url = [NSURL URLWithString:[str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease]; 
[request addRequestHeader:@"Content-Type" value:@"text/x-gwt-rpc; charset=utf-8"]; 
NSDictionary* data = [NSDictionary dictionaryWithObjectsAndKeys:emailId, @"username", pwd, @"password", nil]; 
[request appendPostData: [[data JSONFragment] dataUsingEncoding: NSUTF8StringEncoding]]; 
[request setRequestMethod:@"POST"]; 
[request setDelegate:self]; 
[request setDidFinishSelector: @selector(gotLoginResponse:)]; 
[request setDidFailSelector: @selector(loginRequestFailed:)]; 

[networkQueue addOperation: request]; 
[networkQueue go]; 

Kontrola natychmiast przechodzi do procedury błędu oraz opis błędu i domeny są

Nie można uruchomić połączenia HTTP i ASIHTTPRequestErrorDomain

Mogę uzyskać takie samo żądanie pracy za pomocą narzędzia komputerowego do sprawdzania żądań HTTP, więc wiem, że wszystkie ustawienia są poprawne.

Czy ktoś może mi powiedzieć, czego mi brakuje tutaj, wysyłając prośbę?

Dzięki.

+0

w twoim pierwszym wierszu, mówi "% verifyLogin.json". Nie powinno tak być; "%@verifyLogin.json" ???? – Jake

+0

Mam ten sam problem, jakieś szczęście ?! – Sasho

Odpowiedz

5

Jak komentowałem wcześniej;

w pierwszym wierszu mówi: "% verifyLogin.json". Nie powinno to być ; "%@verifyLogin.json" ????

+1

Przepraszam, że to była literówka. Poprawię w pytaniu – lostInTransit

0

Czy możesz sprawdzić kod statusu żądania, gdy się zawiedzie? Niedawno zajmowałem się problemem uwierzytelniania użytkownika JSON z żądaniem ASI-HTTP, w którym pierwsze żądanie zawsze kończyło się niepowodzeniem z kodem statusu 0 i pewną podstawową awarią połączenia sieciowego (tak jakby nie było podłączone do Internetu, ale wyraźnie było) .

Udało mi się go rozwiązać, ustawiając to konkretne żądanie, aby nie próbować używać stałego połączenia.

Wypróbuj najpierw!

2

Dla mnie zapomniałem dodać http: //, ponieważ testowałem lokalnie. Ale po dodaniu http przebiegło pomyślnie

+1

tę samą sprawę tutaj: D – Abo3atef