Call SOAP method via CURL in PHP,call require client authentication

blkjackbauer

New Member
OVERVIEW:The code is about making call to the escreen web service using SOAP and Curl with client authentication required. Currently I am not getting any result only HTTP 403 and 500 errors.The call requires client authenticate cert to be on the callng site.CODE:\[code\]$content = "<TicketRequest> <Version>1.0</Version> <Mode>Test</Mode> <CommitAction></CommitAction> <PartnerInfo> <UserName>xxxxxxxxxx</UserName> <Password>xxxxxxxxxxx</Password> </ PartnerInfo> <RequestorOrderID></RequestorOrderID> <CustomerIdentification> <IPAddress></IPAddress> <ClientAccount>xxxxxxxxxx</ClientAccount> <ClientSubAccount>xxxxxxxxxx</ClientSubAccount> <InternalAccount></InternalAccount> <ElectronicClientID></ElectronicClientID> </CustomerIdentification> <TicketAction> <Type></Type> <Params> <Param> <ID>4646</ID> <Value></Value> </Param> </Params> </TicketAction></TicketRequest>";$wsdl = "https://services.escreen.com/SingleSignOnStage/SingleSignOn.asmx";$headers = array( "Content-type: text/xml;charset=\"utf-8\"", "Accept: text/xml", "Cache-Control: no-cache", "Pragma: no-cache", // "SOAPAction: \"\"", "Content-length: ".strlen($content), ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $wsdl); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_VERBOSE, '1');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $content); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '1');curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1');//curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml"));curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //curl_setopt($ch, CURLOPT_HTTPHEADER, array('SOAPAction: ""')); curl_setopt($ch, CURLOPT_CAPATH, '/home/pps/');curl_setopt($ch, CURLOPT_CAINFO, '/home/pps/authority.pem');curl_setopt($ch, CURLOPT_SSLCERT, 'PROTPLUSSOL_SSO.pem');curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'xxxxxxxxxxxx');$output = curl_exec($ch);// Check if any error occuredif(curl_errno($ch)){ echo 'Error no : '.curl_errno($ch).' Curl error: ' . curl_error($ch);}print_r($output);\[/code\]QUESTIONS:[*]I need to call the RequestTicket method and pass the XML string to it.I don't know how to do it here(pass the method name to call).[*]For client authentication they gave us three certs, one root cert, one intermediatecert and a client authentication cert PROTPLUSSOL_SSOpem(it was a .pfx file). Since we are on linux we converted them to pem . In curl calls I could not find way to how to include both the root cert and the intermediate cert ,so I combined them by making a new pem file and copying the intermediate cert and them the root cert and naming it authority.pem . I am not sure whether it works or not and would like your opinion.[*]For the current code Iam getting the error Error no : 77 Curl error: error setting certificate verify locations: CAfile: /home/pps/authority.pem CApath: /home/pps/If I disable the curl error message,I am getting blank page with page title 403 - Forbidden. Access is denied.If I comment out the CURLOPT_CAPATH and CURLOPT_CAINFO lines it gives http 500 error page with the message as content and the following at the top.\[quote\] HTTP/1.1 500 Internal Server Error. Cache-Control: private Content-Type: text/html Server: Microsoft-IIS/7.5 X-AspNet-Version: 1.1.4322 X-Powered-By: ASP.NET Date: Thu, 02 Sep 2010 14:46:38 GMT Content-Length: 1208\[/quote\]If I comment out as above and also CURLOPT_SSLCERT and CURLOPT_SSLCERTPASSWD it gives 403 error with the message as content.So I would request you to help me out by pointing out whats wrong with the current code.Thank you.
 
Back
Top