откат к предыдущему смещению при возникновении ошибки при извлечении данных из Intacct - PullRequest
0 голосов
/ 04 июня 2018

Когда мой скрипт извлекает данные из Intacct 100 xml object за раз, все работает нормально, используя мой resultid для запоминания смещения и получения следующего шага, и по какой-то причине он попадает в один из циклов и выбрасываетошибка, говорящая not well-formed (invalid token): line 1, column 57565, зная, что я все время использую одни и те же учетные данные.с этой ошибкой он пропускает 100 объектов и переходит к следующему и продолжает извлекать данные.

Мой вопрос: как выполнить откат после получения ошибки, чтобы мой результат не пропускал данные при возникновении ошибки?Есть ли функция или что-то, что я должен добавить к своему XML-запросу?

Пожалуйста, см. ниже мой текущий XML-запрос.

Спасибо!

headers     = {'Content-type': 'x-intacct-xml-request'}   
API_URL     = 'https://api.intacct.com/ia/xml/xmlgw.phtml'
req_shell_next="""<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE request SYSTEM "intacct_request.v2.1.dtd">
    <request>
      <control>
        <senderid>%s</senderid>
        <password>%s</password>
        <controlid>testRequestId</controlid>
        <uniqueid>false</uniqueid>
        <dtdversion>3.0</dtdversion>
        <includewhitespace>false</includewhitespace>
      </control>
      <operation>
        <authentication>
          <login>
            <userid>%s</userid>
            <companyid>%s</companyid>
            <password>%s</password>
          </login>
        </authentication>
        <content>
          <function controlid="PostJSONObjectCID">
            <readMore>
               <resultId>%s</resultId>
            </readMore>
          </function>
        </content>
      </operation>
    </request>"""

request_data_next               = urllib2.Request(API_URL, req_shell_next % (auth_info_senderid, auth_info_password, auth_info_userid, auth_info_companyid, auth_info_userpw, resultId ), headers)
response_str_data_next          = urllib2.urlopen(request_data_next).read()
response_xml_data_next          = ET.ElementTree(ET.fromstring(response_str_data_next))
...