2013-07-15 23 views
6

jestem coraz ciąg json w bloku awariiAFNetworking błąd Oczekiwany typ zawartości

NSURL *url = [[NSURL alloc] initWithString:@"http://www.vinipost.com/Services/Update/UpdateService.asmx/GetPropSubType?"]; 
     NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url]; 
     [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]]; 

     AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { 

      NSLog(@"%@", JSON); 
     } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { 
      NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo); 
     }]; 
     [operation start]; 

wyjściowa:

Request Failed with Error: Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type {(
    "text/json", 
    "text/javascript", 
    "application/json", 
    "text/html" 
)}, got text/plain" UserInfo=0x71521a0 {NSLocalizedRecoverySuggestion=[{"PropTypId":1,"PropCatId":1,"PropTyp":"Flat/ Condo"}.......** 

Odpowiedz

5

Błąd jest jasne: serwis wstęgę powrocie niewłaściwy typ zawartości. typu treści powinny być jednym z nich:

"text/json", "text/javascript", "application/json", "text/html"

Ale zwraca

text/plain

Ponadto, jeśli spójrz na odpowiedź http, zwraca wewnątrz tagów HTML TAGS, więc AFNetworking nie może parsować.

Jeśli ta strona:

http://www.vinipost.com/Services/Update/UpdateService.asmx/GetPropSubType? 

jest pod kontrolą, poprawić zachowanie usunięcie tagów html i zmieniając typ zawartości

+0

@ LombaX- OK, więc jak sobie z tym poradzić –

+0

zmienić kod strony internetowej UpdateService.asmx, aby zwrócić poprawną odpowiedź JSON, z tekstem/zwykły typ zawartości. Nie mogę ci pomóc z ASP – LombaX

+0

@ lombaX- Dzięki, błąd został naprawiony od strony serwera .. –

4

W AFNetworking, trzeba stworzyć NSURLRequest z pomocą AFHTTPClient (So najpierw trzeba stworzyć AFHTTPClient i trzeba ustawić niektóre właściwości dla tego obiektu) jak poniżej

AFHTTPClient *httpClient = [[httpClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://www.vinipost.com/"]];

[httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]]; 
    [httpClient setDefaultHeader:@"Accept" value:@"application/json"]; 
    httpClient.parameterEncoding = AFJSONParameterEncoding; 

teraz, jeśli zależy od GET/POST lub innego żądania typu, który chcesz ustawić parametr uważam go za żądanie POST, więc ustaw Dict parametru i ustaw wszystkie wymagane pary wartości kluczy poprawnie. Jeśli nie są wymagane żadne parametry, możesz przekazać parametry jak nil

NSURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"Services/Update/UpdateService.asmx/GetPropSubType?" parameters:params]; 
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request 
            success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) 
            { 
             NSLog(@"%@",JSON); 

            } 
            failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) 
            { 
             NSLog(@"Error MSG = %@",error); 
            }]; 

[operation start]; 

nadzieję, że będzie pracować dla ciebie :)

10

trzeba dodać tę linię przed operacją

[AFJSONRequestOperation addAcceptableContentTypes: 
          [NSSet setWithObject:@"text/plain"]];
+0

- problem był po stronie serwera, ponieważ oczekiwane odpowiedzi wyjaśnia –

+1

Jest to również poprawna odpowiedź. Nieprawidłowe jest stwierdzenie, że "problem był po stronie serwera" - problem został określony jako pojawiający się komunikat o błędzie i dlatego mógł zostać naprawiony na końcu serwera lub klienta w celu zapewnienia działającego rozwiązania. –

+0

@ CarlosP- próbowałem najpierw stanislav, ale otrzymałem ten sam problem. nie można naprawić po stronie klienta. –

Powiązane problemy