2016-02-10 5 views
5

हमें रॉयल मेल ट्रैकिंग API का उपयोग करने के लिए PHP SOAP क्लाइंट स्थापित करने में कुछ समस्याएं आ रही हैं। हमारे पास रॉयल मेल के साथ स्थापित एक खाता है और हमारे आईडी और रहस्य हैं। हम इसे SOAPUI का उपयोग करके काम करने के लिए प्राप्त कर सकते हैं लेकिन PHP में इसे लागू करने का प्रयास करते समय हमें हमेशा "गलत संस्करण" त्रुटि मिल रही है। हमारे पास स्थानीय रूप से डब्लूएसडीएल फ़ाइल है (जो रॉयल मेल उनके डेवलपर पोर्टल के माध्यम से प्रदान की जाती है) यह SOAPUI के साथ काम करती है लेकिन PHP SOAP क्लाइंट नहीं है। हम उम्मीद कर रहे थे कि कोई यह देख सके कि हम कुछ गलत कर रहे हैं या नहीं। मैं नीचे दिए गए कोड को पोस्ट करूंगा लेकिन कोड से हमारा गुप्त और आईडी छोड़ दूंगा।PHP और रॉयल मेल ट्रैकिंग API

<?php 
ini_set('soap.wsdl_cache_enabled', 0); 
ini_set('soap.wsdl_cache_ttl', 900); 
ini_set('default_socket_timeout', 15); 

$trackingNumber = 'F111111111JD'; 
$time = gmdate('Y-m-d\TH:i:s'); 

$intHeaders = [ 
    'dateTime' => $time, 
    'version' => '1.0', 
    'identification' => [ 
     'applicationId' => '***********', 
     'transactionId' => 123456 
    ] 
]; 

$wsdl = 'WSDL/Tracking_API_V1_1_1.wsdl'; 

$options = array(
    'uri'=>'http://schemas.xmlsoap.org/soap/envelope/', 
    'style'=>SOAP_RPC, 
    'use'=>SOAP_ENCODED, 
    'soap_version'=>SOAP_1_2, 
    'cache_wsdl'=>WSDL_CACHE_NONE, 
    'connection_timeout'=>15, 
    'trace'=>true, 
    'encoding'=>'UTF-8', 
    'exceptions'=>true, 
    'stream_context' => stream_context_create([ 
     "http" => [ 
      'Accept' => 'application/soap+xml', 
      'X-IBM-Client-Secret' => '****', 
      'X-IBM-Client-Id'=> '****' 
     ] 
    ]) 
); 
try { 
    $soap = new SoapClient($wsdl, $options); 
    $data = $soap->getSingleItemHistory(['integrationHeader' => $intHeaders, 'trackingNumber' => $trackingNumber]); 
} 
catch(Exception $e) { 
    die($e->getMessage()); 
} 

var_dump($data); 
die; 

हम 'soap_version' के लिए SOAP_1_1 और SOAP_1_2 का उपयोग कर की कोशिश की है लेकिन यह हमेशा "ग़लत संस्करण" त्रुटि के साथ वापस आता है।

आशा है कि कोई भी मदद कर सके।

उत्तर

7

तुम इतनी तरह http सरणी के अंदर header कुंजी निर्धारित करने की आवश्यकता:

'stream_context' => stream_context_create(
    [ 
     'http' => 
      [ 
       'header'   => implode(
        "\r\n", 
        [ 
         'Accept: application/soap+xml', 
         'X-IBM-Client-Id: ' . $clientId, 
         'X-IBM-Client-Secret: ' . $clientSecret, 
        ] 
       ), 
      ], 
    ] 
) 
+0

बहुत बहुत शुक्रिया। यह हमारे लिए काम किया है। आपके उत्तर के देर से उत्तर देने के लिए खेद है क्योंकि मैं दूर गया हूं और साइट पर कोई पहुंच नहीं है। – Flyingearl

+0

@alexbibie, आप मेरा दिन बचाओ। मैं बैंक एपीआई में से एक में इसी तरह के परिदृश्य में 2 दिनों तक अपने सिर को टक्कर दे रहा था। – Anon30

संबंधित मुद्दे