Charles Map Local not working for JSON data?
charles-proxy, ios, json, mocking
Solution
You need to add a rewrite rule in Charles to change the Content-Type header back to application/json.
Map Local will only give a text/plain Content-Type.
To do this, go to Tools > Rewrite... > Add.
Add all the locations that you are mapping locally and then for the rules, add one that looks like the following:
I would never recommend adjusting your code just for Charles as this defeats the point of testing your web services if you can't replicate them exactly.
Problem
I am trying to simulate (mocking it) a server using Charles. I found out that Charles has something called "Map Local..." which allows me to reply to a client using files I have stored locally. The files I am pointing to have been stored by right clicking in the Charles Sequence list and choosing "Save Response...". However when testing this with my iOS app I get the following error message: ``` Failed to get areas: Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type {( "text/json", "application/json", "text/javascript" )}, got text/plain" ``` So somehow I am not sending the response with the correct header information for Content type. Is there a way of telling Charles that the response is JSON? A possible problem is that the files stored only contains the JSON data and not any header.