SUDS 丢失 SOAP 消息体部分
我正在发送一个SOAP请求来更新某个实体。当我创建(而不是更新)几乎相同的东西时,一切都正常。我追踪了客户端和传输的日志,最后找到了线索。看起来是这样的:
DEBUG:suds.client:sending to (https://webservices.autotask.net/ATServices/1.5/atws.asmx)
message:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://autotask.net/ATWS/v1_5/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns1:Body>
<ns0:update>
<ns0:Entities xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ns0:Entity xsi:type="ns0:Ticket">
<ns0:id>123</ns0:id>
<ns0:UserDefinedFields xsi:type="xsd:string"></ns0:UserDefinedFields>
<ns0:AccountID xsi:type="xsd:string">123</ns0:AccountID>
<ns0:AllocationCodeID xsi:type="xsd:string">123</ns0:AllocationCodeID>
<ns0:CompletedDate xsi:type="xsd:string">2011-04-04 14:47:02</ns0:CompletedDate>
<ns0:CreateDate xsi:type="xsd:string">2011-04-04 04:08:02.000203</ns0:CreateDate>
<ns0:CreatorResourceID xsi:type="xsd:string">123</ns0:CreatorResourceID>
<ns0:Description xsi:type="xsd:string"></ns0:Description>
<ns0:DueDateTime xsi:type="xsd:string">2011-04-05 09:36:00</ns0:DueDateTime>
<ns0:EstimatedHours xsi:type="xsd:string">0.0</ns0:EstimatedHours>
<ns0:IssueType xsi:type="xsd:string">123</ns0:IssueType>
<ns0:LastActivityDate xsi:type="xsd:string">2011-04-04 14:47:04.000157</ns0:LastActivityDate>
<ns0:Priority xsi:type="xsd:string">123</ns0:Priority>
<ns0:QueueID xsi:type="xsd:string">123</ns0:QueueID>
<ns0:Status xsi:type="xsd:string">123</ns0:Status>
<ns0:SubIssueType xsi:type="xsd:string">123</ns0:SubIssueType>
<ns0:TicketNumber xsi:type="xsd:string">123</ns0:TicketNumber>
<ns0:Title xsi:type="xsd:string">foo</ns0:Title>
<ns0:FirstResponseDateTime xsi:type="xsd:string">2011-04-04 14:47:02.000427</ns0:FirstResponseDateTime>
<ns0:ResolutionPlanDateTime xsi:type="xsd:string">2011-04-04 14:47:02.000427</ns0:ResolutionPlanDateTime>
<ns0:ResolvedDateTime xsi:type="xsd:string">2011-04-04 14:47:02.000427</ns0:ResolvedDateTime>
<ns0:Resolution xsi:type="xsd:string"></ns0:Resolution>
</ns0:Entity>
</ns0:Entities>
</ns0:update>
</ns1:Body>
</SOAP-ENV:Envelope>
DEBUG:suds.client:headers = {'SOAPAction': u'"http://autotask.net/ATWS/v1_5/update"';, 'Content-Type': 'text/xml; charset=utf-8'}
DEBUG:suds.transport.http:sending:
URL:https://webservices.autotask.net/ATServices/1.5/atws.asmx
HEADERS: {'Soapaction': u'"http://autotask.net/ATWS/v1_5/update"', 'SOAPAction': u'"http://autotask.net/ATWS/v1_5/update"', 'Content-Type': 'text/xml; charset=utf-8', 'Content-type': 'text/xml; charset=utf-8', 'Authorization': 'Basic YXV0b21hdGlhQGFyY2VzLm5ldDp5dWYkOWFyN2VQaDY='}
MESSAGE:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:ns0="http://autotask.net/ATWS/v1_5/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<ns1:Body>
<ns0:update>
<Entities/>
</ns0:update>
</ns1:Body>
</SOAP-ENV:Envelope>
但是这样我就收到了一个错误:
Object reference not set to an instance of an object.
有没有人知道,这个SOAP请求发生了什么,为什么它的整个实体内容都丢失了,变成了一个空消息?这是suds的问题,服务器的问题,代码的问题,还是我自己的问题?
感谢任何小帮助,让我理解发生了什么。
1 个回答
1
我在回答我自己的问题,这样我就可以把它关闭了。
如果有人感兴趣的话,问题已经解决了。suds.sx里有个错误,具体可以在这里查看。因为我编辑了SOAP请求,所以我发送的请求是空的。为了修正这个问题,我需要删除sx部分,并用MessagePlugin替换它。如果有人感兴趣,可以在这里留言。