Before today\'s iOS 8.3 update I had my code working right, but after updating server started rejecting requests as it could not find JSON data.
I found that iOS is sen
I also have encountered this problem in one application.
It looks like it could be a bug introduced in iOS 8.3. From the official Framework Reference, it is said of the NSURLSessionConfiguration
's HTTPAdditionalHeaders
property:
This property specifies additional headers that are added to all tasks within sessions based on this configuration. For example, you might set the User-Agent header so that it is automatically included in every request your app makes through sessions based on this configuration.
From what I understand, a Content-Type set in this configuration should be automatically included in every request made through this session, which is no longer the case since 8.3. I've filed a radar.
UPDATE: The radar has been set as 'duplicate' of another so it's more likely a bug.
As Luca pointed out, the work around is to set the Content-Type directly on the request:
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
Source: https://developer.apple.com/library/mac/documentation/Foundation/Reference/NSURLSessionConfiguration_class/#//apple_ref/occ/instp/NSURLSessionConfiguration/HTTPAdditionalHeaders
I put the comment as answer here:
Try to indicate the http method like
[request setHTTPMethod:@"POST"]
and / or, the request length
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];
and / or the content type
[request setValue:@"application/<YOUR CONTENT TYPE>"forHTTPHeaderField:@"Content-Type"];
It seems that iOS 8.3 introduces this. At my site we got found the problem that the (json)body was correctly not set inside the request.
When debugging try to debug the server-side also