FollowTheCode Posted October 8, 2007 Share Posted October 8, 2007 I am doing a project at the minute, requiring me to communicate with a (poorly documented) custom designed server (with 1000's of lines of code in it). It doesn't make use of WSDL - however I believe the structure of the SOAP XML Data to be as follows: <SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope'> <SOAP-ENV:Header> <amsh:username xmlns:amsh='http://ams/header' SOAP-ENV:actor='http://ams/server'> alex </amsh:username> <amsh:password xmlns:amsh='http://ams/header' SOAP-ENV:actor='http://ams/server'> WIDhBCudeHOI5h0xj8h+J+AVEw0= </amsh:password> </SOAP-ENV:Header> <SOAP-ENV:Body> <EncryptedData> DiIvrc32LaAYfv9IyG2GuC8/kMq/QTOneS373G4Ubow5g8dlSWcnz0GV5M2 nR3zmKLsl0AFmn2Vy+0DOIEoMLyuaQoi9hOuiBayvxhQaD9NU+35Y15gKjK yu7IvWyNoyJIxgp69PciMvuAnCAeDnMsol4L/fMyoxBLTTc32VoZ1veKrgm gj5ew== </EncryptedData> </SOAP-ENV:Body> </SOAP-ENV:Envelope> I am having difficulty constructing a script that creates the above packet. Forgive me if there any obvious errors, but I am new to PHP, new to SOAP, new to XML, stuck with a server with no documentation and feeling pretty much dumped in at the deep end. I have chosen to use PHP's SOAP extension to do this with, and so far have the following code: <?php $server = "http://localhost:8084/AMS-WebModule/AccessServlet"; $SOAPClient = new SoapClient(NULL, array( "location" => $server, "uri" => "xmlns:amsh", "style" => SOAP_RPC, "use" => SOAP_ENCODED )); $auth["username"]="alex"; $auth["hashedpassword"]="WIDhBCudeHOI5h0xj8h+J+AVEw0="; $SOAPHeader=new SoapHeader('http://ams/header','amsh',$auth); $SOAPClient->__setSoapHeaders(array($SOAPHeader)); var_dump($SOAPClient); $XMLPacket ="<EncryptedData> DiIvrc32LaAYfv9IyG2GuC8/kMq/QTOneS373G4Ubow5g8dlSWcnz0GV5M2 nR3zmKLsl0AFmn2Vy+0DOIEoMLyuaQoi9hOuiBayvxhQaD9NU+35Y15gKjK yu7IvWyNoyJIxgp69PciMvuAnCAeDnMsol4L/fMyoxBLTTc32VoZ1veKrgm gj5ew== </EncryptedData>"; $ReturnedSOAPXMLPacket = $SOAPClient->doRequest($XMLPacket, $server, "", "1.0"); var_dump($ReturnedSOAPXMLPacket); ?> However this results in the following error: Fatal error: Uncaught SoapFault exception: [sOAP-ENV:Client] No Header in C:\WebServer\WebRoot\Projects\ams\index.php:28 Stack trace: #0 [internal function]: SoapClient->__call('doRequest', Array) #1 C:\WebServer\WebRoot\Projects\ams\index.php(28): SoapClient->doRequest('<EncryptedData>...', 'http://localhos...', '', '1.0') #2 {main} thrown in C:\WebServer\WebRoot\Projects\ams\index.php on line 28 Any fixes or alternatives are desperately sought in addition anyone who can answer the following q's will be the recipient of much gratitude - I am getting desperate. Where the XML Namespace is designated as "xmlns:amsh='http://ams/header'" (where ams is the server name) should I be able to view anything at that address (because I can't)? Should there be a Namespace for the <EncryptedData> Tag? Many Thanks in Advance Link to comment https://forums.phpfreaks.com/topic/72259-soap-problems-witout-using-wsdl-help-desperately-needed/ Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.