Как получить доступ к корпоративным веб-службам Yahoo с помощью Python SOAPpy?

1

У меня есть PHP script, который работает, и мне нужно написать то же самое в Python, но SOAPpy генерирует немного другой запрос, и я не уверен, как его исправить, чтобы серверу понравилось.

Запрос, сгенерированный php script, выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="http://marketing.ews.yahooapis.com/V4"
>
<SOAP-ENV:Header>
<ns1:username>*****</ns1:username>
<ns1:password>*****</ns1:password>
<ns1:masterAccountID>*****</ns1:masterAccountID>
<ns1:accountID>6674262970</ns1:accountID>
<ns1:license>*****</ns1:license>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:getCampaignsByAccountID>
<ns1:accountID>6674262970</ns1:accountID>
<ns1:includeDeleted>false</ns1:includeDeleted>
</ns1:getCampaignsByAccountID>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

При попытке сделать то же самое с помощью SOAPPy я получаю этот запрос:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema"
>
<SOAP-ENV:Header>
<username xsi:type="xsd:string">*****</username>
<masterAccountID xsi:type="xsd:string">*****</masterAccountID>
<license xsi:type="xsd:string">*****</license>
<accountID xsi:type="xsd:integer">6674262970</accountID>
<password xsi:type="xsd:string">*****</password>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:getCampaignsByAccountID xmlns:ns1="http://marketing.ews.yahooapis.com/V4">
<includeDeleted xsi:type="xsd:boolean">False</includeDeleted>
<accountID xsi:type="xsd:integer">6674262970</accountID>
</ns1:getCampaignsByAccountID>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Несколько другой запрос, но я думаю, он должен работать, но я получаю сообщение об ошибке с сервера: "Идентификатор учетной записи, указанный в

Заголовок

не соответствует указанному в параметре. "

Но они соответствуют!

Единственное, что я вижу, это некоторая разница в пространствах имен, но я понятия не имею, что делать прямо сейчас. Пожалуйста, помогите.

Теги:
soap
soappy

2 ответа

2

Проблема заключалась не в формате заголовков SOAP, а в отношении порядка параметров. Здесь полное объяснение и код: http://pea.somemilk.org/2009/04/05/yahoo-search-marketing-python-soap-binding/

0

accountID должен иметь тип xsd: string, а не xsd: integer. (возможно, вы передаете строку вместо целого числа, и именно поэтому SOAPpy делает это именно так?)

  • 0
    Я также пытался передать его как строку, но, к сожалению, с тем же результатом. Но все равно спасибо за ответ :) Приближается крайний срок, поэтому сейчас я пытаюсь обойтись без SOAPpy.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню