Question

Sending json data to server and want to get correct response.statusCode from server with AFNetworking

server:

// Helper method to send a HTTP response code/message
function sendResponse($status = 200, $body = '', $content_type = 'text/html')
{
    $status_header = 'HTTP/1.1 ' . $status . ' ' . getStatusCodeMessage($status);
    header($status_header);
    header('Content-type: ' . $content_type);
    echo $body;
} 
sendResponse(200, json_encode("Files Deleted"));

IOS:

NSURL *url = [NSURL URLWithString:server];
        AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];
        // don't forget to set parameterEncoding!
        httpClient.parameterEncoding = AFJSONParameterEncoding;\
        NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:deleteExtraFilesIn parameters:nil];
        [request setHTTPBody:[displayJson  dataUsingEncoding:NSUTF8StringEncoding]];
        [request addValue:@"ASIHTTPRequest" forHTTPHeaderField:@"User-Agent"];
        [request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        NSLog(@"request %@",request);
        [AFJSONRequestOperation addAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];
        AFHTTPRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:nil failure:nil];

        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id response) {
            // Print the response body in text
            if (operation.response.statusCode == 200) {
                NSLog(@"Got you");

            }
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
        }];
        [operation start];

ERROR NSLOG:

Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (JSON text did not start with array or object and option to allow fragments not set.) UserInfo=0x1f519df0 {NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

How can I get correct http response in above code?

Note:json_encode("Files Deleted") on server is just dummy text what I want is http response code.

Was it helpful?

Solution

You need to set the operation to allow fragments:

        AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:nil failure:nil];
operation.JSONReadingOptions = NSJSONReadingAllowFragments;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top