2013-05-10 18 views
6

Meine QBWC-App hat gut funktioniert, aber ich wurde heute Morgen mit der Meldung informiert, dass sie plötzlich nicht mehr funktioniert. Insbesondere konnte es sich nicht authentifizieren. Ich überprüfte die QWCLog.txt und fand diesenQBWC WSDL fehlt

20130510.14:25:19 UTC : QBWebConnector.SOAPWebService.do_authenticate() : QBWC1012: Authentication failed due to following error message. SOAP-ERROR: Parsing WSDL: Couldn't load from ' http://developer.intuit.com/uploadedFiles/Support/QBWebConnectorSvc.wsdl ' : failed to load external entity " http://developer.intuit.com/uploadedFiles/Support/QBWebConnectorSvc.wsdl "

, dass ein neues ist (und ich habe die Fehlerprotokollierung erweitert auf, damit ich voll Anrufe sehen). Also ging ich zur WSDL-Datei und finde ... es ist 404 ?!

Ich habe sogar versucht, eine meiner AWS Instanzen mir sicher, es ist zu machen, nicht nur

wget http://developer.intuit.com/uploadedFiles/Support/QBWebConnectorSvc.wsdl --2013-05-10 15:10:50-- http://developer.intuit.com/uploadedFiles/Support/QBWebConnectorSvc.wsdl Resolving developer.intuit.com (developer.intuit.com)... 206.108.40.170 Connecting to developer.intuit.com (developer.intuit.com)|206.108.40.170|:80... connected. HTTP request sent, awaiting response... 404 Not Found 2013-05-10 15:10:51 ERROR 404: Not Found.

jemand dieses zu bekommen? Gibt es eine neue URL, über die ich nichts weiß? Ich muss das nur noch einmal machen.

+0

Es gab eine Website-Update letzte Nacht und es sieht so aus, als ob dies verpasst wurde. Ich werde sehen, was getan werden kann. –

+1

Diese Datei hat sich in ein paar Jahren nicht geändert, Sie müssen sie also nicht jedes Mal neu erstellen. Sie sollten die letzte Version verwenden können. –

+0

Ich habe nicht wirklich versucht, es jedes Mal zu ziehen (und der lokale Server speichert es). Der Beispielcode, den ich gefunden habe, hat es so verwendet und es läuft seit über einem Jahr so. Ich habe eine Kopie auf Github gefunden, also habe ich das in meine lokale Codebase gezogen und das funktioniert jetzt. Dennoch verweisen viele Leute auf diese URL für die WSDL, sodass Sie vielleicht überlegen, sie zurückzusetzen oder eine 301 an einem neuen Speicherort hinzuzufügen. Die Kopie, die ich gefunden habe, ist hier: https://github.com/consolibyte/quickbooks-php/blob/master/QuickBooks/QBWebConnectorSvc.wsdl – Machavity

Antwort

4

Ich stimme zu, dass dieses Problem derzeit besteht.

Das half mir: Alter Code:
$server = new SoapServer($wsdl_url);
Neuer Code:
$server = new SoapServer('file:///home/to/wsdl/file');

Und das ist das, was ich in meiner WSDL-Datei haben:

<?xml version="1.0" encoding="utf-8"?> 
<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://developer.intuit.com/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://developer.intuit.com/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 
    <wsdl:types> 
    <s:schema elementFormDefault="qualified" targetNamespace="http://developer.intuit.com/"> 
     <s:element name="authenticate"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="strUserName" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="strPassword" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="authenticateResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="authenticateResult" type="tns:ArrayOfString" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:complexType name="ArrayOfString"> 
     <s:sequence> 
      <s:element minOccurs="0" maxOccurs="unbounded" name="string" nillable="true" type="s:string" /> 
     </s:sequence> 
     </s:complexType> 

<!-- added these two methods --> 
    <s:element name="serverVersion"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="strVersion" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="serverVersionResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="serverVersionResult" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="clientVersion"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="strVersion" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="clientVersionResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="clientVersionResult" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 


     <s:element name="sendRequestXML"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="ticket" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="strHCPResponse" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="strCompanyFileName" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="qbXMLCountry" type="s:string" /> 
      <s:element minOccurs="1" maxOccurs="1" name="qbXMLMajorVers" type="s:int" /> 
      <s:element minOccurs="1" maxOccurs="1" name="qbXMLMinorVers" type="s:int" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="sendRequestXMLResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="sendRequestXMLResult" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="receiveResponseXML"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="ticket" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="response" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="hresult" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="message" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="receiveResponseXMLResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="1" maxOccurs="1" name="receiveResponseXMLResult" type="s:int" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="connectionError"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="ticket" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="hresult" type="s:string" /> 
      <s:element minOccurs="0" maxOccurs="1" name="message" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="connectionErrorResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="connectionErrorResult" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="getLastError"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="ticket" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="getLastErrorResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="getLastErrorResult" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="closeConnection"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="ticket" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
     <s:element name="closeConnectionResponse"> 
     <s:complexType> 
      <s:sequence> 
      <s:element minOccurs="0" maxOccurs="1" name="closeConnectionResult" type="s:string" /> 
      </s:sequence> 
     </s:complexType> 
     </s:element> 
    </s:schema> 
    </wsdl:types> 

    <wsdl:message name="authenticateSoapIn"> 
    <wsdl:part name="parameters" element="tns:authenticate" /> 
    </wsdl:message> 
    <wsdl:message name="authenticateSoapOut"> 
    <wsdl:part name="parameters" element="tns:authenticateResponse" /> 
    </wsdl:message> 

<!-- added this part --> 
    <wsdl:message name="serverVersionSoapIn"> 
    <wsdl:part name="parameters" element="tns:serverVersion" /> 
    </wsdl:message> 
    <wsdl:message name="serverVersionSoapOut"> 
    <wsdl:part name="parameters" element="tns:serverVersionResponse" /> 
    </wsdl:message> 
    <wsdl:message name="clientVersionSoapIn"> 
    <wsdl:part name="parameters" element="tns:clientVersion" /> 
    </wsdl:message> 
    <wsdl:message name="clientVersionSoapOut"> 
    <wsdl:part name="parameters" element="tns:clientVersionResponse" /> 
    </wsdl:message> 


    <wsdl:message name="sendRequestXMLSoapIn"> 
    <wsdl:part name="parameters" element="tns:sendRequestXML" /> 
    </wsdl:message> 
    <wsdl:message name="sendRequestXMLSoapOut"> 
    <wsdl:part name="parameters" element="tns:sendRequestXMLResponse" /> 
    </wsdl:message> 
    <wsdl:message name="receiveResponseXMLSoapIn"> 
    <wsdl:part name="parameters" element="tns:receiveResponseXML" /> 
    </wsdl:message> 
    <wsdl:message name="receiveResponseXMLSoapOut"> 
    <wsdl:part name="parameters" element="tns:receiveResponseXMLResponse" /> 
    </wsdl:message> 
    <wsdl:message name="connectionErrorSoapIn"> 
    <wsdl:part name="parameters" element="tns:connectionError" /> 
    </wsdl:message> 
    <wsdl:message name="connectionErrorSoapOut"> 
    <wsdl:part name="parameters" element="tns:connectionErrorResponse" /> 
    </wsdl:message> 
    <wsdl:message name="getLastErrorSoapIn"> 
    <wsdl:part name="parameters" element="tns:getLastError" /> 
    </wsdl:message> 
    <wsdl:message name="getLastErrorSoapOut"> 
    <wsdl:part name="parameters" element="tns:getLastErrorResponse" /> 
    </wsdl:message> 
    <wsdl:message name="closeConnectionSoapIn"> 
    <wsdl:part name="parameters" element="tns:closeConnection" /> 
    </wsdl:message> 
    <wsdl:message name="closeConnectionSoapOut"> 
    <wsdl:part name="parameters" element="tns:closeConnectionResponse" /> 
    </wsdl:message> 
    <wsdl:portType name="QBWebConnectorSvcSoap"> 

    <!-- add this chunk --> 
    <wsdl:operation name="serverVersion"> 
     <wsdl:input message="tns:serverVersionSoapIn" /> 
     <wsdl:output message="tns:serverVersionSoapOut" /> 
    </wsdl:operation> 
    <wsdl:operation name="clientVersion"> 
     <wsdl:input message="tns:clientVersionSoapIn" /> 
     <wsdl:output message="tns:clientVersionSoapOut" /> 
    </wsdl:operation> 


    <wsdl:operation name="authenticate"> 
     <wsdl:input message="tns:authenticateSoapIn" /> 
     <wsdl:output message="tns:authenticateSoapOut" /> 
    </wsdl:operation> 
    <wsdl:operation name="sendRequestXML"> 
     <wsdl:input message="tns:sendRequestXMLSoapIn" /> 
     <wsdl:output message="tns:sendRequestXMLSoapOut" /> 
    </wsdl:operation> 
    <wsdl:operation name="receiveResponseXML"> 
     <wsdl:input message="tns:receiveResponseXMLSoapIn" /> 
     <wsdl:output message="tns:receiveResponseXMLSoapOut" /> 
    </wsdl:operation> 
    <wsdl:operation name="connectionError"> 
     <wsdl:input message="tns:connectionErrorSoapIn" /> 
     <wsdl:output message="tns:connectionErrorSoapOut" /> 
    </wsdl:operation> 
    <wsdl:operation name="getLastError"> 
     <wsdl:input message="tns:getLastErrorSoapIn" /> 
     <wsdl:output message="tns:getLastErrorSoapOut" /> 
    </wsdl:operation> 
    <wsdl:operation name="closeConnection"> 
     <wsdl:input message="tns:closeConnectionSoapIn" /> 
     <wsdl:output message="tns:closeConnectionSoapOut" /> 
    </wsdl:operation> 
    </wsdl:portType> 
    <wsdl:binding name="QBWebConnectorSvcSoap" type="tns:QBWebConnectorSvcSoap"> 
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
    <!-- this too was added... --> 
    <wsdl:operation name="serverVersion"> 
     <soap:operation soapAction="http://developer.intuit.com/serverVersion" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="clientVersion"> 
     <soap:operation soapAction="http://developer.intuit.com/clientVersion" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 

    <wsdl:operation name="authenticate"> 
     <soap:operation soapAction="http://developer.intuit.com/authenticate" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="sendRequestXML"> 
     <soap:operation soapAction="http://developer.intuit.com/sendRequestXML" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="receiveResponseXML"> 
     <soap:operation soapAction="http://developer.intuit.com/receiveResponseXML" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="connectionError"> 
     <soap:operation soapAction="http://developer.intuit.com/connectionError" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="getLastError"> 
     <soap:operation soapAction="http://developer.intuit.com/getLastError" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    <wsdl:operation name="closeConnection"> 
     <soap:operation soapAction="http://developer.intuit.com/closeConnection" style="document" /> 
     <wsdl:input> 
     <soap:body use="literal" /> 
     </wsdl:input> 
     <wsdl:output> 
     <soap:body use="literal" /> 
     </wsdl:output> 
    </wsdl:operation> 
    </wsdl:binding> 
    <wsdl:service name="QBWebConnectorSvc"> 
    <wsdl:port name="QBWebConnectorSvcSoap" binding="tns:QBWebConnectorSvcSoap"> 
     <soap:address location="https://idn.vogelfam.net/QBMSDonorSample/QBWebConnectorSvc.asmx" /> 
    </wsdl:port> 
    </wsdl:service> 
</wsdl:definitions> 
+0

Sie brauchen nicht einmal die file: // Deklaration. Ich habe den ganzen Weg hinein gegangen und es hat gut funktioniert. – Machavity

+0

Funktionierte für mich nicht ohne die Datei: // Deklaration. Könnte etwas mit VirtualBox sein, oder vielleicht die cms, die ich benutze (drupal). – TheDuke