获取Soap错误SOAP-ERROR:解析WSDL:无法加载.....无法加载外部实体

时间:2015-06-16 08:50:09

标签: php web-services soap wsdl

    //put those data in an array to make the xml below
    $xml = '<order>';
    $xml.=             '<details>';
    $xml.=                '<id>'.$order_number.'</id>';
    $xml.=                '<restaurant>_Generic</restaurant>';
    $xml.=                '<datePlaced>'.date('Y-m-d H:i:s').'</datePlaced>';
    $xml.=                '<deliveryDate>'.$delivery.'</deliveryDate>';    
    $xml.=                '<totalPrice>'.$total.'</totalPrice>';
    $xml.=                '<totalTax>'.$total_tax.'</totalTax>';
    $xml.=                '<totalDiscount>'.$total_discount.'</totalDiscount>';
    $xml.=                '<deliveryFee>'.$total_shipping.'</deliveryFee>';
    $xml.=                '<deliveryFeeTaxable>true</deliveryFeeTaxable>';
    $xml.=                '<tip>0.00</tip>';
    $xml.=                '<orderType>'.$shipping_method.'</orderType>';
    $xml.=                '<orderStatus>ProcessedOffline</orderStatus>';
    $xml.=                '<orderComment>'.$order_comments.'</orderComment>';
    $xml.=             '</details>';
    $xml.=             '<customer>';
    $xml.=                '<billingAddress>';
    $xml.=                   '<firstName>'.$first_name.'</firstName>';
    $xml.=                   '<lastName>'.$last_name.'</lastName>';
    $xml.=                   '<companyName>'.$company.'</companyName>';
    $xml.=                   '<phoneNumber>'.$phone.'</phoneNumber>';
    $xml.=                   '<address1>'.$address_1.'</address1>';
    $xml.=                   '<address1>'.$address_2.'</address1>';
    $xml.=                   '<city>'.$city.'</city>';
    $xml.=                   '<state>'.$state.'</state>';
    $xml.=                   '<zipCode>'.$postcode.'</zipCode>';
    $xml.=                '</billingAddress>';
    $xml.=                '<deliveryAddress>';
    $xml.=                   '<firstName>'.$meta['_shipping_first_name'][0].'</firstName>';
    $xml.=                   '<lastName>'.$meta['_shipping_last_name'][0].'</lastName>';
    $xml.=                   '<companyName>'.$meta['_shipping_company'][0].'</companyName>';
    $xml.=                   '<phoneNumber>'.$phone.'</phoneNumber>';
    $xml.=                   '<address1>'.$meta['_shipping_address_1'][0].'</address1>';
    $xml.=                   '<address2 />';
    $xml.=                   '<city>'. $meta['_shipping_city'][0].'</city>';
    $xml.=                   '<state>'. $meta['_shipping_state'][0].'</state>';
    $xml.=                   '<zipCode>'. $meta['_shipping_postcode'][0].'</zipCode>';
    $xml.=                '</deliveryAddress>';
    $xml.=                '<carInformation />';
    $xml.=                '<pickupInformation />';
    $xml.=             '</customer>';
    $xml.=             '<items>';








                 foreach( $order->get_items() as $item_id => $item ) {

                          $product = $order->get_product_from_item( $item );

                   $xml.= '<item>';
    $xml.=  '<plu></plu>';
    $xml.=       '<title>'.$item['name'].'</title>';
    $xml.=       '<itemPrice>'.$item['item_meta']['_line_total'][0].'</itemPrice>';
    $xml.=       '<qty>'.$item['qty'].'</qty>';
    $xml.=       '<recipient />';
    $xml.=       '<itemComment />';

                                             $xml.= '<options>';
                                                    $xml.=  '<option>';
                $xml.=     '<plu></plu>';
                $xml.=     '<title>'.$item['size'].'</title>';
                $xml.=     '<value>'.$item['brand'].'</value>';
                $xml.=     '<price></price>';
                $xml.=  '</option>';

                                                     $xml.= '</options>';
                     $xml.='</item>';


     }



          $xml.= '</items>';





    $xml.=             '<payment>';
    $xml.=                '<type>CreditCard</type>';
    $xml.=                '<cardInformation>';
    $xml.=                   '<nameOnCard>'.$a.'</nameOnCard>';
    $xml.=                   '<cardType />';
    //$xml.=                     '<cardNumber>'.$a.'</cardNumber>';
    $xml.=                   '<cardNumber>'.$a.'</cardNumber>';
    $xml.=                   '<expMonth>'.$a.'</expMonth>';
    $xml.=                   '<expYear>'.$a.'</expYear>';
    $xml.=                   '<gateway>OfflineProcessing</gateway>';
    $xml.=                   '<transactionType />';
    $xml.=                   '<transactionID />';
    $xml.=                '</cardInformation>';
    $xml.=             '</payment>';
    $xml.=          '</order>';
    ini_set("soap.wsdl_cache_enabled","0");
    ini_set("default_socket_timeout", 100);



            $clienturl = 'http://69.73.228.16:8008/weborder/OnlineOrderXmlProcessor.asmx?WSDL'; // live site



    $client = new SoapClient($clienturl); 


//  print_r($xml);

    $params = array();
    $params["strDocType"] = 'OrderImport';
    $params["strXml"] = $xml;
    $result = $client->ProcessXML($params);

它不起作用。但是相同的代码用于具有不同URL的dev服务器。 在实时服务器中配置相同,但显示错误。

SOAP-ERROR:解析WSDL:无法从“http://69.73.228.16:8008/weborder/OnlineOrderXmlProcessor.asmx?WSDL”加载:无法加载外部实体“http://69.73.228.16:8008/weborder/OnlineOrderXmlProcessor.asmx?WSDL

1 个答案:

答案 0 :(得分:1)

是的,我得到了解决方案。

禁用CSF防火墙后我的代码正常运行。

您可以通过卷曲检查。

打开SSH并输入:

curl  -A ''  -4 http://google.com
你会收到回复。 现在通过您的WDSL URL进行检查 如果您收到错误,则应禁用防火墙。