Qtsoap запрос не передает аргументы - PullRequest
0 голосов
/ 15 сентября 2011

Я пытаюсь заставить мыло работать в Qt я нашел: qtsoap-2.7_1-opensource

мой код запроса:

void DataConnector::checkLogin(QString username, QString password){
    QtSoapMessage request;
    request.setMethod(QtSoapQName("checkLogin","http://service/"));
    request.addMethodArgument("username","",username);
    request.addMethodArgument("password","",password);
    http->setAction("");
    http->submitRequest(request, QString("/datacheckService"));
}

сообщение о запросе мыла выглядит так:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
    <SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
        <checkLogin xmlns="http://service/">
            <username xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">4444</username>
            <password xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">4444</password>
        </checkLogin>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

сервер не обнаруживает теги имени пользователя и пароля, поскольку они имеют неправильное пространство имен.

проблема в том, что имя пользователя и пароль должны получить атрибут: xmlns: = "" вместо пространства имен. Отсутствие пространства имен означает, что они занимают пространство имен своего родителя

мой запрос должен выглядеть так:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
    <SOAP-ENV:Body xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
        <checkLogin xmlns="http://service/">
            <username xmlns="" xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">4444</username>
            <password xmlns="" xsi:type="xsd:string" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance">4444</password>
        </checkLogin>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

есть идеи, как мне этого добиться, используя код qtsoap?

1 Ответ

0 голосов
/ 04 декабря 2011

Проблема в коде QtSoap

, просто найдите, где xmlns = "" необходимо добавить к сообщению мыла в исходном коде qtsoap, и отредактируйте конструкцию if, чтобы она также добавляла ее, когда строка""

исправил проблему для меня

, если вы хотите источник: напишите мне, и я отправлю его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...