This code works fine for me.
405 errors often arise with the POST method, however not all ISPs allow the POST method necessary to process the request.
All 405 errors can be traced to configuration of the Web server and security governing access to the content of the Web site, so should easily be explained by your ISP.
As the code you have posted is the same as outlined here
] on the paypal site I would have a talk with the hosts and get them to investigate, other than that you may want to look into if you need to use a proxy and uncomment the proxy section of the code, replacing the "url:port#" part with the correct proxy information (if you need to use a proxy that is).