user1453351
user1453351

Reputation:

Listening to HTTP requests in iOS

Is there a way to intercept HTTP requests in the iPhone? e.g. something in the NSNotificationCenter I can register for so my app would get notified each time an HTTP request will go out or an HTTP response will come in?

I searched a lot but no luck,

Thank you

Upvotes: 2

Views: 2948

Answers (3)

Mark Kelly
Mark Kelly

Reputation: 563

Do you just want to view all of the HTTP/HTTPS traffic going to / from a single device that you have control of (e.g for debugging purposes)? If so, just setup a proxy and use that to monitor the requests.

If you're talking about building this into an app for general release, I'd very much hope this wasn't possible, and that if it was, I'd suspect it wouldn't make it through app store approval.

If you just want a debugging proxy:

For Windows, download Fiddler (free), and use your and follow the instructions here (install a cert on your phone and use the IP address of the machine running Fiddler as the proxy address): http://docs.telerik.com/fiddler/configure-fiddler/tasks/ConfigureForiOS

For Mac OSX, Charles will also do the job (I've used it for this purpose and it works well): http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

Upvotes: 0

Daij-Djan
Daij-Djan

Reputation: 50140

no you cant intercept HTTP requests with your app - you can of course act as a proxy for your OWN app's request but you cant proxy other apps' requests

Upvotes: 4

Shams Ahmed
Shams Ahmed

Reputation: 4513

From your question its not clear what you want to do, but i would suggest either implementation NSURLProtocol class or using PonyDebugger.

NSURLProtocol:
Create a subclass of NSURLProtocol class that will handle all web protocols such as HTTP, HTTPS, SSL etc. This is a abstract class that provides the basic structure for performing protocol-specific loading of URL data.

Once your created your custom URL protocol, register it in appDelegate class so your protocol will have priority over any of the built-in protocols.

 [NSURLProtocol registerClass:[MyURLProtocol class]];

PonyDebugger:
if you just looking to intercept all your http request i would try this tool. PonyDebugger is a remote debugging toolset. It is a client library and gateway server combination that uses Chrome Developer Tools on your browser to debug your application's network traffic and managed object contexts.

AFNetworking:
if your using the very popular AFNetworking for your network request they automatically send notification. try to register the following two:

AFNetworkingTaskDidResumeNotification  
AFNetworkingTaskDidCompleteNotification

Upvotes: 3

Related Questions