Quickshiftin - Clever Crazy Code

SoapClient with Attachments for PHP

September 1st, 2013

Have you ever needed to upload or download a file over SOAP? There’s a really easy way to handle it, packaging a base-64 encoded string representing the file as a simple string type. Simple, but what if you’re working on a SOAP client, and the server is using the SOAP with Attachments (SwA) paradigm to send and receive files?  I recently had this experience with a PortaOne integration, which uses SOAP::Lite for Perl to provide SOAP services to the switch.
More »

Debugging Soap Services with Zend Studio

September 6th, 2011

How do you get the debugger in Zend Studio to step through SoapServer code?

Inevitably as you develop Soap services with PHP you have to deal with a bug in the server side code. Since you can embed SoapClient in a script that renders a Web page and hit said page from a browser, it’s easy to debug SoapClient code using the debug toolbar. Doing the same for SoapServer code doesn’t work; you’ll see the problem in a moment. Conventional techniques like error_log et al to track down problems can seem painful compared to Zend Studio’s interactive debugger. Once you’re comfortable with the debugger and the advantages it offers this SoapServer enigma becomes very annoying, especially when you’ve got a bug to fix!

More »

PHP Soap Services Part 2, Generic Service Providers

May 3rd, 2011

Introduction

If you read our article a couple weeks back about dynamically changing the WSDL URL via SoapServer you may have thought, there’s little value here, since I use Zend Framework or NuSoap to publish Soap Services with PHP. This article explores a more prevalent issue with the design of SoapServer and the problem can’t be solved with a subclass of SoapServer. The problem we explore in this article is the design of the classes you would use to handle Soap actions. These classes and objects are designated by the SoapServer setClass and setObject methods. We’ll refer to them as Provider Classes in this article.

More »