SoapFault Object ( [message:protected] => SOAP-ERROR: Parsing WSDL: Couldn't load from ' '

Viewed 44

i am getting the error:

SoapFault Object ( [message:protected] => SOAP-ERROR: Parsing WSDL: Couldn't load from ' '

when trying to make a call to the UPS API.

I have attached below my code:

<?php

  //Configuration
  $access = "XXX";
  $userid = "XXX@XXX.com";
  $passwd = "XXXX";
  $wsdl = '<?xml version="1.0" encoding="UTF-8"?>
<!-- UPS Rate Service WSDL Release Date Dec 29, 2007 -->
<!-- Copyright 2007-2008 United Parcel Service of America, Inc. All rights reserved.   -->
<wsdl:definitions name="RateWS" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:error="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1" xmlns:upss="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0" xmlns:rate="http://www.ups.com/XMLSchema/XOLTWS/Rate/v1.1" xmlns:tns="http://www.ups.com/WSDL/XOLTWS/Rate/v1.1" targetNamespace="http://www.ups.com/WSDL/XOLTWS/Rate/v1.1">
  <wsdl:types>
    <xsd:schema>
      <!-- This schema defines the UPS Security header used for authorization purposes -->
      <xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0" schemaLocation="UPSSecurity.xsd"/>
      <!--  This schema defines the error detail data types returned within SOAPFaults to provide more specific information pertaining to the problem. -->
      <xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/Error/v1.1" schemaLocation="Error1.1.xsd"/>
      <!-- This schema defines the Rate service data types -->
      <xsd:import namespace="http://www.ups.com/XMLSchema/XOLTWS/Rate/v1.1" schemaLocation="RateWebServiceSchema.xsd"/>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="RateRequestMessage">
    <wsdl:part name="Body" element="rate:RateRequest"/>
    <wsdl:part name="UPSSecurity" element="upss:UPSSecurity"/>
  </wsdl:message>
  <wsdl:message name="RateResponseMessage">
    <wsdl:part name="Body" element="rate:RateResponse"/>
  </wsdl:message>
  <wsdl:message name="RateErrorMessage">
    <wsdl:part name="RateError" element="error:Errors"/>
  </wsdl:message>
  <wsdl:portType name="RatePortType">
    <wsdl:operation name="ProcessRate">
      <wsdl:input name="RateRequest" message="tns:RateRequestMessage"/>
      <wsdl:output name="RateResponse" message="tns:RateResponseMessage"/>
      <wsdl:fault name="RateError" message="tns:RateErrorMessage"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="RateBinding" type="tns:RatePortType">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="ProcessRate">
      <soap:operation soapAction="http://onlinetools.ups.com/webservices/RateBinding/v1.1" style="document"/>
      <wsdl:input name="RateRequest">
        <soap:body parts="Body" use="literal"/>
        <soap:header message="tns:RateRequestMessage" part="UPSSecurity" use="literal">
          <soap:headerfault message="tns:RateErrorMessage" part="RateError" use="literal"/>
        </soap:header>
      </wsdl:input>
      <wsdl:output name="RateResponse">
        <soap:body parts="Body" use="literal"/>
      </wsdl:output>
      <wsdl:fault name="RateError">
        <soap:fault name="RateError" use="literal"/>
      </wsdl:fault>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="RateService">
    <wsdl:port name="RatePort" binding="tns:RateBinding">
      <!-- Production URL -->
      <!-- <soap:address location="https://onlinetools.ups.com/webservices/Rate"/> -->
      <!-- CIE (Customer Integration Environment) URL -->
      <soap:address location="https://wwwcie.ups.com/webservices/Rate"/>
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>';
  $operation = "ProcessRate";
  $endpointurl = 'https://wwwcie.ups.com/webservices/Rate';
  $outputFileName = "XOLTResult.xml";

  function processRate()
  {
      //create soap request
      $option['RequestOption'] = 'Shop';
      $request['Request'] = $option;

      $pickuptype['Code'] = '01';
      $pickuptype['Description'] = 'Daily Pickup';
      $request['PickupType'] = $pickuptype;

      $customerclassification['Code'] = '01';
      $customerclassification['Description'] = 'Classfication';
      $request['CustomerClassification'] = $customerclassification;

      $shipper['Name'] = 'Imani Carr';
      $shipper['ShipperNumber'] = '222006';
      $address['AddressLine'] = array
      (
          'Southam Rd',
          '4 Case Cour',
          'Apt 3B'
      );
      $address['City'] = 'Timonium';
      $address['StateProvinceCode'] = 'MD';
      $address['PostalCode'] = '21093';
      $address['CountryCode'] = 'US';
      $shipper['Address'] = $address;
      $shipment['Shipper'] = $shipper;

      $shipto['Name'] = 'Imani Imaginarium';
      $addressTo['AddressLine'] = '21 ARGONAUT SUITE B';
      $addressTo['City'] = 'ALISO VIEJO';
      $addressTo['StateProvinceCode'] = 'CA';
      $addressTo['PostalCode'] = '92656';
      $addressTo['CountryCode'] = 'US';
      $addressTo['ResidentialAddressIndicator'] = '';
      $shipto['Address'] = $addressTo;
      $shipment['ShipTo'] = $shipto;

      $shipfrom['Name'] = 'Imani Imaginarium';
      $addressFrom['AddressLine'] = array
      (
          'Southam Rd',
          '4 Case Court',
          'Apt 3B'
      );
      $addressFrom['City'] = 'Timonium';
      $addressFrom['StateProvinceCode'] = 'MD';
      $addressFrom['PostalCode'] = '21093';
      $addressFrom['CountryCode'] = 'US';
      $shipfrom['Address'] = $addressFrom;
      $shipment['ShipFrom'] = $shipfrom;

      $service['Code'] = '03';
      $service['Description'] = 'Service Code';
      $shipment['Service'] = $service;

      $packaging1['Code'] = '02';
      $packaging1['Description'] = 'Rate';
      $package1['PackagingType'] = $packaging1;
      $dunit1['Code'] = 'IN';
      $dunit1['Description'] = 'inches';
      $dimensions1['Length'] = '5';
      $dimensions1['Width'] = '4';
      $dimensions1['Height'] = '10';
      $dimensions1['UnitOfMeasurement'] = $dunit1;
      $package1['Dimensions'] = $dimensions1;
      $punit1['Code'] = 'LBS';
      $punit1['Description'] = 'Pounds';
      $packageweight1['Weight'] = '1';
      $packageweight1['UnitOfMeasurement'] = $punit1;
      $package1['PackageWeight'] = $packageweight1;

      $packaging2['Code'] = '02';
      $packaging2['Description'] = 'Rate';
      $package2['PackagingType'] = $packaging2;
      $dunit2['Code'] = 'IN';
      $dunit2['Description'] = 'inches';
      $dimensions2['Length'] = '3';
      $dimensions2['Width'] = '5';
      $dimensions2['Height'] = '8';
      $dimensions2['UnitOfMeasurement'] = $dunit2;
      $package2['Dimensions'] = $dimensions2;
      $punit2['Code'] = 'LBS';
      $punit2['Description'] = 'Pounds';
      $packageweight2['Weight'] = '2';
      $packageweight2['UnitOfMeasurement'] = $punit2;
      $package2['PackageWeight'] = $packageweight2;

      $shipment['Package'] = array( $package1 , $package2 );
      $shipment['ShipmentServiceOptions'] = '';
      $shipment['LargePackageIndicator'] = '';
      $request['Shipment'] = $shipment;
      echo "Request.......\n";
      print_r($request);
      echo "\n\n";
      return $request;
  }

  try
  {

    $mode = array
    (
         'soap_version' => 'SOAP_1_1',  // use soap 1.1 client
         'trace' => 1
    );

    // initialize soap client
    $client = new SoapClient($wsdl , $mode);

    //set endpoint url
    $client->__setLocation($endpointurl);


    //create soap header
    $usernameToken['Username'] = $userid;
    $usernameToken['Password'] = $passwd;
    $serviceAccessLicense['AccessLicenseNumber'] = $access;
    $upss['UsernameToken'] = $usernameToken;
    $upss['ServiceAccessToken'] = $serviceAccessLicense;

    $header = new SoapHeader('http://www.ups.com/XMLSchema/XOLTWS/UPSS/v1.0','UPSSecurity',$upss);
    $client->__setSoapHeaders($header);


    //get response
    $resp = $client->__soapCall($operation ,array(processRate()));

    //get status
    echo "Response Status: " . $resp->Response->ResponseStatus->Description ."\n";

    //save soap request and response to file
    $fw = fopen($outputFileName , 'w');
    fwrite($fw , "Request: \n" . $client->__getLastRequest() . "\n");
    fwrite($fw , "Response: \n" . $client->__getLastResponse() . "\n");
    fclose($fw);

  }
  catch(Exception $ex)
  {
    print_r ($ex);
  }

?>

Also since enabling soap was a problem here is my php.ini

extension=soap
extension=sockets
;extension=sodium
;extension=sqlite3
;extension=tidy
extension=xsl
extension=php_openssl.dll
extension=php_curl.dll
extension=php_xmlrpc.dll

i had to dumb down php.ini to not hit word cap if im missing anything tell me and ill provide

Any help would be greatly appreciated

0 Answers
Related