2014-02-07 3 views
2

Я пытаюсь отправить пару запросов в формате quickbooks вместе в пакетном запросе. Я следил за форматированием, которое Intuit дает здесь https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/020_key_concepts/00700_batch_operation, но я продолжаю получать ValidationFault. Я не уверен, что вызывает ошибку, поэтому любая помощь будет очень признательна. Благодаря!QBOv3 Ошибка проверки XML

XML:

<IntuitBatchRequest xmlns="http://schema.intuit.com/finance/v3"> 
    <BatchItemRequest bId="1" > 
     <Query query="Select * from Payment WHERE CustomerRef = '1933' ORDERBY TxnDate DESC MAXRESULTS 1"/> 
    </BatchItemRequest> 
    <BatchItemRequest bId="2" > 
     <Query query="Select * from Payment WHERE CustomerRef = '290' ORDERBY TxnDate DESC MAXRESULTS 1"/> 
    </BatchItemRequest> 
</IntuitBatchRequest> 

Ответ я вернусь:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2014-02-07T12:47:32.442-08:00"> 
    <BatchItemResponse bId="1"> 
     <Fault type="ValidationFault"> 
      <Error code="4000"> 
       <Message>Error parsing query</Message> 
       <Detail>QueryParserError: Encountered &quot;&lt;EOF&gt;&quot; at line 0, column 0. Was expecting: &quot;select&quot; ... 
       </Detail> 
      </Error> 
     </Fault> 
    </BatchItemResponse> 
    <BatchItemResponse bId="2"> 
     <Fault type="ValidationFault"> 
      <Error code="4000"> 
       <Message>Error parsing query</Message> 
       <Detail>QueryParserError: Encountered &quot;&lt;EOF&gt;&quot; at line 0, column 0. Was expecting: &quot;select&quot; ... 
       </Detail> 
      </Error> 
     </Fault> 
    </BatchItemResponse> 
</IntuitResponse> 

ответ

1

Оказалось, что документация Intuit неверна (по крайней мере, для ее RBO API QBOv3).

В https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/020_key_concepts/00700_batch_operation Intuit говорит XML должен быть отформатирован так, как я показал в своем первом посте, но это должно фактически быть отформатирован следующим образом:

<IntuitBatchRequest xmlns="http://schema.intuit.com/finance/v3"> 
    <BatchItemRequest bId="1"> 
     <Query> 
      Select * from Payment WHERE CustomerRef = '1933' ORDERBY TxnDate DESC MAXRESULTS 1 
     </Query> 
    </BatchItemRequest> 
    <BatchItemRequest bId="2"> 
     <Query> 
      Select * from Payment WHERE CustomerRef = '290' ORDERBY TxnDate DESC MAXRESULTS 1 
     </Query> 
    </BatchItemRequest> 
</IntuitBatchRequest> 

Я надеюсь, что это помогает другим в будущем! Спасибо за все ответы, они помогли сузить проблему.

0

Ваш запрос должен выглядеть

SELECT * from Payment WHERE

НЕ

query * from Payment WHERE

+0

Стреляй, извините. Я пробовал оба пути, и они оба возвращают ту же ошибку. Я отредактировал мой пост выше, чтобы отразить правильную структуру запросов. – hacklan07

0

CustomerRef фактически является объектом ReferenceType и вы отправляете для него значение. Попробуйте CustomerRef.value = "123"

+0

Это была хорошая мысль, но не удача. Я даже попробовал «Выбрать * из платежа» и дал ту же ошибку. – hacklan07

+0

А, я думаю, это проблема с экранированием XML. Вы отправляете неверный XML. Ваш '' 'должен быть' ' ' – codesalsa

Смежные вопросы