For Cocoa developers that need to do URL access and is finding limitations
with NSURLHandle, you might want to check out CURLHandle, available at:


This is a public domain Cocoa class that subclasses NSURLHandle and wraps
around “curl”. It can be used for HTTP PUT, GET, and POST, and also ftp and
really anything else the curl handles. It also knows about HTTP proxies,
something lacking in NSURLHandle.

CURLHandle is the technology under the hood in Watson
(, and is now being used by a number of
other developers for URL data transport.

This 1.5 release is significant in that it contains new functionality used
in Watson 1.5, new functionality submitted by other contributors, and that
it is now packaged as a Framework, making it easier to integrate into your
own project.

Interested in learning more about CURLHandle? Check out the latest issue of
MacTech magazine…..


Release notes for this version:

* This will likely be the last version with Mac OS X 10.0 support.

* Packaged CURLHandle as a standalone framework. There are now two projects
— CURLHandle.pbproj, which is used for building the framework, and
CURLHandleTester.pbproj, which builds the testing application.

* The process for building an application that uses CURLHandle, and the
process for building the framework itself, have changed; see the
DevNotes.txt file.

* added CURLHandleCreatedNotification. Post a notification when a
CURLHandle is created. That way, your app can be notified when a CURLHandle
is created behind your back — this is handy if you want to load and
display a Web page that has images….

* added url method to get the NSURL from the CURLHandle

* Updated the DevNotes.txt file significantly to make it easier to build

* Added setPostString: in case your post isn’t in dictionary form.

* Added a variation of setPostDictionary where you can specify the string
encoding for the POST.

* added setAllowsProxy, whether to use the proxy settings or not

* Some leak cleanup (though there seems to be a leak with ports and run
loops; this has been reported to Apple)

* Added setRange, setNoBody, setIfModSince to CURLHandle+Extras (thanks to
Tom Waters)

* Added PUT abilities (thanks to Tom Waters)