2012-06-18 16 views
16

से लोड नहीं कर सका PHP में:सोप-त्रुटि: पार्स डबल्यूएसडीएल: <URL>

SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://xxx.xxxx.asmx?WSDL' : 
failed to load external entity "http://xxx.xxxx.asmx?WSDL" 

मेरे कोड है::

<?php 
header('Content-Type: text/plain'); 
    if (!class_exists('SoapClient')) 
{ 

     die ("You haven't installed the PHP-Soap module."); 

} 

ini_set('max_execution_time',1); 
     try { 
      $options = array(
       'soap_version'=>SOAP_1_2, 
       'exceptions'=>true, 
       'trace'=>1, 
       'cache_wsdl'=>WSDL_CACHE_NONE 
      ); 
      $client = new SoapClient('http://xxx.xxxx.asmx?WSDL', $options); 
// Note where 'CreateIncident' and 'request' tags are in the XML 
      $results = $client->CreateIncident(
        array(
         'FirstName'=>'gyaan', 
         'LastName'=>'p', 
         'Email'=>'[email protected]', 
         'QueryProductClass'=>'QueryProductClass', 
         'ChannelCode'=>12, 
         'CampaignCode'=>234, 
         'Lob'=>'Lob', 
         'PackageName'=>'SEONI', 
         'PackageCode'=>'SMP', 
         'TravelYear'=>2012, 
         'TravelMonth'=>06, 
         'TravelDay'=>29, 
         'CityOfResidence'=>'Jabalpur', 
         'ncidentNotes'=>'testing ignor this', 
         'MobilePhone'=>'1234567890', 
         'DepartureCity'=>'bangalore', 
         'NoOfDaysTravel'=>'3 Days', 
         'VendorName'=>'TEST HIQ' 
         ) 
        ); 
     } catch (Exception $e) { 
      echo "<h2>Exception Error!</h2>"; 
      echo $e->getMessage(); 
     } 


?> 

कृपया मुझे बताओ कि मैं जहां बनाने रहा हूँ मैं एक त्रुटि हो रही है गलती मैं डब्लूएसडीएल और साबुन

उत्तर

4

में नया हूं, मेरे पास बिल्कुल वही त्रुटि संदेश था। मेरे मामले में, डब्ल्यूएसडीएल में संदर्भित लक्षित सर्वर के लिए मेरी /etc/hosts फ़ाइल (सेवा होस्ट करने वाले सर्वर पर) में एक प्रविष्टि बना रही है। http:?

एक अजीब शब्दों में त्रुटि संदेश का प्रकार ..

+0

धन्यवाद, इस उत्तर के लिए आदमी। मुझे नहीं पता कि किसी और ने आपके जैसे समान समस्या समाधान क्यों पोस्ट नहीं किए हैं, लेकिन मैंने इस सटीक समाधान को खोजने में कई घंटे बिताए हैं और शायद आपने मेरे लिए कुछ और बेकार शोध घंटे बचाए हैं। –

1

आपके सिस्टम मेजबान के लिए DNS प्रविष्टि जोड़ने
उदाहरण के लिए फ़ाइल //aaa.com/service.asmx डबल्यूएसडीएल
आप प्राप्त कर सकते हैं aaa.com के पिंग
और उसके बाद के साथ आईपी पते पर मेजबान फ़ाइल

28

मैं php_openssl विस्तार को सक्षम करने से मेरे WAMP सेटअप पर इस हल जोड़ने के लिए, यूआरएल के बाद से मैं इस्तेमाल किया https:// से लोड हो रहा है किया गया था।

+13

मेरे लिए यह सक्षम है और अभी भी कोई परिणाम नहीं है !!! – Abadis

4

यदि आप इसे स्थानीयहोस्ट पर उपयोग करना चाहते हैं, तो WAMP का उपयोग करें।

फिर ट्रे आइकन> पीएचपी सेवा पर क्लिक करें> और वहाँ निम्नलिखित सक्षम:

  • सोप
  • php_openssl
  • openssl
  • कर्ल

पी। कुछ मुफ्त वेब-होस्टिंग में वे विकल्प नहीं हो सकते हैं

+2

क्या अलग है? openssl बनाम php_openssl –

6

मुझे यह समस्या थी और मुझे समझने में घंटों लग गए। मुख्य रूप से इस त्रुटि का कारण सोप क्लाइंट मेजबान से वेब सेवा फ़ाइल स्ट्रीम नहीं कर सकता है। मैंने अपनी php.ini फ़ाइल में "एक्सटेंशन = php_openssl.dll" इस पंक्ति को असम्बद्ध किया और यह काम करता है।

0

इसी तरह की त्रुटि भी। मुझे पता चला कि मेरे पास विशेष होस्ट के लिए एक .htpasswd सेटअप था। इसे .htaccess फ़ाइल से असम्बद्ध किया और ठीक काम किया।

1

php.ini विन्यास फाइल

extension=php_openssl.dll 
extension=php_curl.dll 
extension=php_xmlrpc.dll 
2

कोड के इस टुकड़े जोड़ने की कोशिश से इन सभी सक्षम करें। यह मेरे लिए काम किया।

$opts = array(
 
    'ssl' => array('ciphers'=>'RC4-SHA', 'verify_peer'=>false, 'verify_peer_name'=>false) 
 
); 
 
// SOAP 1.2 client 
 
$params = array ('encoding' => 'UTF-8', 'verifypeer' => false, 'verifyhost' => false, 'soap_version' => SOAP_1_2, 'trace' => 1, 'exceptions' => 1, "connection_timeout" => 180, 'stream_context' => stream_context_create($opts)); 
 
$url = "http://www.webservicex.net/globalweather.asmx?WSDL"; 
 

 
try{ 
 
\t $client = new SoapClient($url,$params); 
 
} 
 
catch(SoapFault $fault) { 
 
\t echo '<br>'.$fault; 
 
}

+0

ये विकल्प HTTPS सुरक्षा सुविधाओं को अक्षम करते हैं ... आम तौर पर एक अच्छा विचार नहीं। –

+0

एसएसएल संदर्भ पर सिफर विकल्प जोड़ने के लिए मेरे लिए एक ही समस्या हल हो गई। धन्यवाद! – Kambaa

0

मैं एक ही त्रुटि एक बार मैं

example.com/index.php/api/soap/?wsdl

हाँ, मैं याद आ रही थी सूचकांक करने के लिए अपने Magento रूट URL को अपडेट

Could not connect to the Magento WebService API: SOAP-ERROR: Parsing WSDL: Couldn't load from 'example.com/api/soap/?wsdl' : failed to load external entity "example.com/api/soap/?wsdl"

और मेरी समस्या का समाधान हो गया .php जो त्रुटि का कारण बनता है।

2

मैं एक ही त्रुटि मिली है और मैं इसे php.ini फ़ाइल में साबुन सेटिंग ढूंढ और बदलते soap.wsdl_cache_enabled = 1soap.wsdl_cache_enabled = 0

+0

मुझे एक ही त्रुटि मिली और यह मेरे लिए काम किया ... मुझे बस अपने कनेक्शन में समस्याएं थीं और PHP को संभावित रूप से कैश किया गया था। –

5

को यह प्रयास करें हल:

$Wsdl = 'http://xxxx.xxx.xx/webservice3.asmx?WSDL'; 
libxml_disable_entity_loader(false); //adding this worked for me 
$Client = new SoapClient($Wsdl); 
//Code... 
0

जैसा कि पहले के जवाब में बताया गया है, यह त्रुटि तब हो सकती है जब एक HTTPS कनेक्शन पर एक SOAP सेवा के साथ बातचीत करते समय, और कनेक्शन के साथ एक समस्या की पहचान की जाती है। यह समस्या रिमोट एंड (अमान्य प्रमाण) या क्लाइंट पर हो सकती है (लापता सीए या पीईएम फाइलों के मामले में)। सभी संभावित SSL संदर्भ सेटिंग्स के लिए http://php.net/manual/en/context.ssl.php देखें। मेरे मामले में, मेरे स्थानीय प्रमाणपत्र में पथ सेट करने से समस्या हल हो गई:

$context = ['ssl' => [ 
    'local_cert' => '/path/to/pem/file', 
]]; 

$params = [ 
    'soap_version' => SOAP_1_2, 
    'trace' => 1, 
    'exceptions' => 1, 
    'connection_timeout' => 180, 
    'stream_context' => stream_context_create($context), 
    'cache_wsdl' => WSDL_CACHE_NONE, // eliminate possible issue from cached wsdl 
]; 

$client = new SoapClient('https://remoteservice/wsdl', $params); 
संबंधित मुद्दे