2017-12-29 19 views
0

Ich habe eine SOAP-Anwendung erstellt, um über QuickBooksWebConnector eine Verbindung zu QuickBooks Desktop herzustellen. Ich habe meine WSDL-URL an WebConnector übergeben. Beim ersten Rückruf der Authentifizierung zeigt der Connector diesen Fehler an:Objektreferenz nicht auf eine Instanz eines Objekts für SOAP WebService in Java eingestellt

QBWC1012: Authentifizierung aufgrund folgender Fehlermeldung fehlgeschlagen. Objektreferenz nicht auf eine Instanz eines Objekts festgelegt. Weitere Informationen finden Sie in QWCLog. Denken Sie daran, die Anmeldung zu aktivieren.

Das bedeutet idealerweise: Objektverweis nicht auf eine Instanz eines Objekts festgelegt.

Wenn ich das versuche, von SOAPUI oder WebServiceExplorer auszuführen, zeigt es richtig Antwortnachricht wie unten angegeben:

Anfrage:

<soapenv:Envelope> 
    <soapenv:Body> 
    <q0:authenticate> 
     <q0:strUserName>Admin</q0:strUserName> 
     <q0:strPassword>Admin</q0:strPassword> 
    </q0:authenticate> 
    </soapenv:Body> 
</soapenv:Envelope> 

Antwort:

<soapenv:Envelope> 
    <soapenv:Body> 
    <authenticateResponse> 
     <authenticateReturn xsi:type="ns1:ArrayOfString"> 
     <ns1:string>{57F3B9B1-86F1-4fcc-B1EE-566DE1813D20}</ns1:string> 
     <ns1:string>none</ns1:string> 
     </authenticateReturn> 
    </authenticateResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

(Entnommen WebServiceExplorer) Als ich nach diesem Fehler gesucht habe: Es kann verursachen, wenn Connector etwas Null oder ungültige Antworten als Antwort erhält, verursacht diesen Fehler. So lösen Sie diese Art von Fehler.

Ich bin neu in SOAP Webservice und auch neu mit QuickBooks.

Vielen Dank im Voraus.

Antwort

0

Arbeitete. Lösung:

I Anmerkung in Methodendeklaration und Modellklassendefinitionen hinzugefügt, um diese Art von Fehlern zu lösen (siehe unten)

Anmerkungen für Service-Deklaration:

@WebService(name = "QBWebConnectorSvcSoap", targetNamespace = "http://developer.intuit.com/") 
@XmlSeeAlso({ 
    ObjectFactory.class 
}) 
public interface QBWebConnectorSvcSoap { 

@WebMethod(action = "http://developer.intuit.com/authenticate") 
    @WebResult(name = "authenticateResult", targetNamespace = "http://developer.intuit.com/") 
    @RequestWrapper(localName = "authenticate", targetNamespace = "http://developer.intuit.com/", className = "com.cantero.quickbooks.ws.Authenticate") 
    @ResponseWrapper(localName = "authenticateResponse", targetNamespace = "http://developer.intuit.com/", className = "com.cantero.quickbooks.ws.AuthenticateResponse") 
    public ArrayOfString authenticate(
     @WebParam(name = "strUserName", targetNamespace = "http://developer.intuit.com/") 
     String strUserName, 
     @WebParam(name = "strPassword", targetNamespace = "http://developer.intuit.com/") 
     String strPassword); 

//same for remaining methods  
} 

Anmerkung für Modellklassen:

package com.cantero.quickbooks.ws; 

import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlType; 

/** 
* <p>Java class for anonymous complex type. 
* <p>The following schema fragment specifies the expected content contained within this class. 
* <pre> 
* &lt;complexType> 
* &lt;complexContent> 
*  &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> 
*  &lt;sequence> 
*   &lt;element name="strUserName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> 
*   &lt;element name="strPassword" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> 
*  &lt;/sequence> 
*  &lt;/restriction> 
* &lt;/complexContent> 
* &lt;/complexType> 
* </pre> 
*/ 
@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    "strUserName", 
    "strPassword" 
}) 
@XmlRootElement(name = "authenticate") 
public class Authenticate { 

    protected String strUserName; 
    protected String strPassword; 

    public String getStrUserName() { 
     return strUserName; 
    } 

    public void setStrUserName(String value) { 
     this.strUserName = value; 
    } 

    public String getStrPassword() { 
     return strPassword; 
    } 

    public void setStrPassword(String value) { 
     this.strPassword = value; 
    } 

} 

Für weitere Details über das, was in diesen Anmerkungen [target/WebAction/XmlType] Sie können diesen Link verweisen schreiben:

https://www.connexforquickbooks.com/qbwebservice.asmx?op=authenticate

Verwandte Themen