2013-07-15 14 views
6

sto ottenendo la stringa JSON nel blocco fallimentoAFNetworking tipo di contenuto atteso errore

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]; 

uscita:

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"}.......** 

risposta

5

L'errore è chiaro: servizio web sta tornando un tipo di contenuto errato. Il tipo di contenuto dovrebbe essere uno di questi:

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

Ma restituisce

text/plain

Inoltre, se si guarda la risposta http, restituisce TAG HTML all'interno, quindi AFNetworking non è in grado di analizzare.

Se questa pagina:

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

è sotto il vostro controllo, correggere il comportamento di rimuovere i tag HTML e cambiando il tipo di contenuto

+0

@ LombaX- ok, così come trattare con esso –

+0

cambia il codice della pagina Web UpdateService.asmx per restituire una risposta JSON corretta, con testo/tipo di contenuto semplice. Non posso aiutarti con ASP – LombaX

+0

@ lombaX- Grazie, l'errore è stato corretto dal lato server .. –

4

In AFNetworking, è necessario creare NSURLRequest con l'aiuto di AFHTTPClient (Così per prima cosa è necessario creare AFHTTPClient e devono impostare alcune proprietà per questo oggetto) come qui di seguito

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

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

ora se dipende da GET/POST o qualsiasi altra richiesta di tipo è necessario impostare il parametro Lo considero come POST Request, quindi impostare il parametro Dict e impostare correttamente tutte le coppie di valori chiave necessarie.se nessun parametro richiesto è possibile passare Parametri come 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]; 

speranza che questo lavoro per voi :)

10

è necessario aggiungere questa linea prima operazione

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

-Il problema era dal lato server come le risposte attese spiega –

+1

Questa è anche una risposta corretta. Non è corretto affermare che "il problema è stato dal lato server" - il problema è stato specificato come un messaggio di errore che si verifica e quindi potrebbe essere stato risolto sul lato server o client per fornire una soluzione funzionante. –

+0

@ CarlosP- ho provato prima Stanislav, ma ho riscontrato lo stesso problema. non è stato possibile risolvere il problema dal lato client. –

Problemi correlati