2015-05-11 3 views
2

Когда я вызываю Create API из консоли python, оно дает следующее исключение.VersionOne.SDK.Python Исключение при создании истории

Traceback (most recent call last): 
File "<stdin>", line 3, in <module> 
    File "C:\Python27\lib\v1pysdk\base_asset.py", line 44, in create 
    return Class._v1_v1meta.create_asset(Class._v1_asset_type_name, newdata) 
    File "C:\Python27\lib\v1pysdk\v1meta.py", line 128, in create_asset 
    new_asset_xml = self.server.create_asset(asset_type_name, update_doc) 
    File "C:\Python27\lib\v1pysdk\client.py", line 202, in create_asset 
    return self.get_xml(path, query=query, postdata=body) 
    File "C:\Python27\lib\v1pysdk\client.py", line 159, in get_xml 
    document = ElementTree.fromstring(body) 
    File "C:\Python27\lib\xml\etree\ElementTree.py", line 1281, in XML 
    parser.feed(text) 
    File "C:\Python27\lib\xml\etree\ElementTree.py", line 1623, in feed 
    self._raiseerror(v) 
    File "C:\Python27\lib\xml\etree\ElementTree.py", line 1487, in _raiseerror 
    raise err 
xml.etree.ElementTree.ParseError: reference to invalid character number: line 7575, column 75 

Я запускаю его с Python2.7 на окнах. Это API Я звоню

from v1pysdk import V1Meta 

v1 = V1Meta(
    address = 'www11.v1host.com', 
    instance = '<InstName>', 
    username = 'sbaid', 
    password = 'XXXXXX' 
    ) 

new_story = v1.Story.create(
    Name = "Temp", 
    Scope = v1.Scope(321450) 
    ) 

v1.Scope(321450) возвращает правильное имя проекта, что означает, что сеанс с version1 правильно установлена.

Это только два обязательных параметра, и я могу создать историю с этими двумя параметрами с помощью веб-интерфейса.

Я также смог создать историю, используя следующий запрос REST

URL - https://www11.v1host.com/InstName/rest-1.v1/Data/Story

<Asset href="/<InstName>/rest-1.v1/New/Story"> 
<Attribute name="Name" act="set">Temp</Attribute> 
<Relation name="Scope" act="set"> 
<Asset href="/<InstName>/rest-1.v1/Data/Scope/321450" idref="Scope:321450" /> 
</Relation> 
</Asset> 
+0

Вы положить в символы в XML, такие как '>' или '<', который заставит парсер потерпеть неудачу? Попробуйте открыть xml в Internet explorer, чтобы узнать, открывается ли он без ошибок. Если это не так, вам, возможно, придется изменить '<' and '>' на 'lt;' и 'gt;' соответственно. – shahkalpesh

+0

@shahkalpesh Я не передаю какой-либо документ SML явно, поэтому любой создаваемый XML генерируется самим API. –

+0

Привет @saurabhbaid, помог ли мой ответ? – JoshGough

ответ

1

Существует альтернативный способ указать адрес хоста, который является более надежным. Вот пример того, что вы можете попробовать против экземпляра публичного тестирования VersionOne SDK:

from v1pysdk import V1Meta 

with V1Meta (
    instance_url = 'https://www14.v1host.com/v1sdktesting', 
    username = 'admin', 
    password = 'admin' 
    ) as v1: 

    new_story = v1.Story.create(
     Name = "Temp Test for StackOverflow question", 
     Scope = v1.Scope(0) 
     ) 

    fetched_story = v1.Story.where(Number=new_story.Number).first() 
    print fetched_story.Name 
+0

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

+0

@JoshGough: Это может быть добавлено как комментарий вместо ответа. – shahkalpesh

+0

Это сработало, спасибо. Но в чем разница между этими двумя методами? –

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