2009-07-20 8 views
0

Ich versuche, die unten xml auf https://apps.quickbooks.com/j/AppGateway zu posten und alles, was ich bekomme, ist der Fehler: Der Remote-Server gab einen Fehler zurück: (400) Bad Request . Hat jemand irgendwelche Ideen was ich falsch mache? Siehe unten für den C# -Code, den ich verwende, um das XML zu posten.Gültige XML für die Veröffentlichung in QuickBooks Online Edition - Empfangen (400) Bad Request Error

Danke, -Jeff

UPDATE: mehr auf meine Frage hinzuzufügen, ich denke, dass die (400) Bad Request Fehler zeigt an, dass ich etwas grob falsch mit dem xml oder mit der Art und Weise habe ich bin Veröffentlichen der XML. Deshalb stelle ich diese Frage ... Was fehlt mir hier?

<?xml version="1.0" encoding="utf-8" ?> 
<?qbxml version="7.0"?> 
<QBXML> 
<SignonMsgsRq> 
<SignonDesktopRq> 
<ClientDateTime>7/20/2009 12:36PM</ClientDateTime> 
<ApplicationLogin>APP_LOGIN</ApplicationLogin> 
<ConnectionTicket>CONNECTION_TICKET</ConnectionTicket> 
<Language>English</Language> 
<AppID>APP_ID</AppID> 
<AppVer>1</AppVer> 
</SignonDesktopRq> 
</SignonMsgsRq> 
<QBXMLMsgsRq> 
<CustomerQueryRq requestID="2" /> 
</QBXMLMsgsRq> 
</QBXML> 



WebRequestObject = (HttpWebRequest)WebRequest.Create(requestUrl); 
WebRequestObject.Method = "POST"; 
WebRequestObject.ContentType = "application/x-qbxml"; 
WebRequestObject.AllowAutoRedirect = false; 
string post = XmlText.Text; 

WebRequestObject.ContentLength = post.Length; 

swr = new StreamWriter(WebRequestObject.GetRequestStream()); 
swr.Write(post); 
swr.Close(); 

WebResponseObject = (HttpWebResponse)WebRequestObject.GetResponse(); 

Antwort

0

Als Keith Palmermentioned in his answer muss die Versionsnummer 6.0 sein, muss aber auch das onError-Attribut des QBXMLMsgsRq-Tags enthalten. (I korrigiert auch das Zeitformat zu, wie durch Keith Palmer empfehlen.)

Complete/Arbeits xml ist hier:

<?xml version="1.0" encoding="utf-8" ?> 
<?qbxml version="6.0"?> 
<QBXML> 
    <SignonMsgsRq> 
     <SignonDesktopRq> 
      <ClientDateTime>2009-07-21T10:10:00</ClientDateTime> 
      <ApplicationLogin>APPLICATION_LOGIN</ApplicationLogin> 
      <ConnectionTicket>CONNECTION_TICKET</ConnectionTicket> 
      <Language>English</Language> 
      <AppID>APP_ID</AppID> 
      <AppVer>1</AppVer> 
     </SignonDesktopRq> 
    </SignonMsgsRq> 
    <QBXMLMsgsRq onError="continueOnError"> 
     <CustomerQueryRq requestID="2" /> 
    </QBXMLMsgsRq> 
</QBXML> 
0

wo wird das xml in request ?? Oder Sie fehlen hier, um etwas Code einzufügen. Ich sehe nicht, dass die Anfrage XML im obigen Code hat. Die Anfrage ist schlecht, weil die Anfrage kein XML enthält. Zumindest von dem, was ich oben sehe

+0

Hallo RJ, diese Linie: string post = XmlText.Text; liest das XML aus einer Textbox. Das obige XML befindet sich in diesem Textfeld. -Jeff –

1

Ändern Sie Ihre QbXML-Version auf 6.0, unterstützt QuickBooks Online Edition 7.0 noch nicht.

+0

Die Versionsnummer war ein Teil des Problems, musste aber auch onError = "continueOnError" im QBXMLMsgsRq-Tag enthalten, sonst würde es auch Fehler geben. Ich setze den vollständigen XML-Code, der in einer anderen Antwort funktioniert hat. –

0

Sie können die XML für eine Kundenanfrage auf dieser Website erhalten:

QuickBooks Online OSR

Wählen Sie CustomerQuery als Nachricht aus. Verwenden Sie Chrome, da es nicht in allen Browsern funktioniert. Klicken Sie auf XmlOps und Sie sehen das XML.

Auf einer anderen Anmerkung, ich habe eine kommerzielle Lösung finden Sie hier:

QuickBooks Online C# Development Integration