Почему при вызове из gsoap возникает ошибка HTTP 400 при вызове веб-службы, работающей в IIS 7.5? - PullRequest
0 голосов
/ 30 августа 2011

Я пытаюсь вызвать веб-службу, работающую на компьютере с Windows 7, в IIS 7.5. Я могу вызвать веб-сервис с локального компьютера, используя soapUI и Java-клиент с другого компьютера, и он работает. Когда я пытаюсь вызвать веб-сервис с удаленного компьютера с использованием среды gsoap в программе на C, я получаю HTTP 400: Bad Request. Мой запрос / ответ ниже, есть идеи?

POST /MyService/AddressService.asmx HTTP/1.1
Host: thisMachine.myDomain.net
User-Agent: gSOAP/2.7
Content-Type: text/xml; charset=utf-8
Content-Length: 714
Connection: close
SOAPAction: "http://thisMachine.myDomain.net/MyService/AddressService.asmx/CheckAddress"
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
    <AddressService1:CheckAddress>
        <AddressService1:chkAddress>
            <AddressService1:chkCompanyName>Test</AddressService1:chkCompanyName>
            <AddressService1:chkStreet1>123 Some Rd</AddressService1:chkStreet1>
            <AddressService1:chkStreet2></AddressService1:chkStreet2>
            <AddressService1:chkCity>Columbia</AddressService1:chkCity>
            <AddressService1:chkState>SC</AddressService1:chkState>
            <AddressService1:chkZipcode5>29054</AddressService1:chkZipcode5>
            <AddressService1:chkZipcode4></AddressService1:chkZipcode4>
            <AddressService1:chkSuite></AddressService1:chkSuite>
        </AddressService1:chkAddress>
    </AddressService1:CheckAddress>
</SOAP-ENV:Body>

HTTP/1.1 400 Bad Request
Cache-Control: private
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 29 Aug 2011 19:46:55 GMT
Connection: close
Content-Length: 0

1 Ответ

0 голосов
/ 31 августа 2011

Я забыл упомянуть, что я использую GSOAP на OpenVms.Это оказывается значительным, потому что gSoap был портирован на OpenVms и, возможно, в порту произошла ошибка.Похоже, происходит то, что я использовал опцию -n с WSDL2H и указал пространство имен, которое будет использоваться при генерации исходных файлов клиента gsoap.К массиву пространств имен в сгенерированном файле .nsmap было добавлено мое пространство имен к имени массива, что вызывает проблемы при обращении к массиву (это отображается как предупреждение во время компиляции, как только я изменил свой make (командная процедура), чтобы показать предупреждения);поскольку на массив нельзя ссылаться, пространства имен были исключены из документа SOAP, и это было неприемлемо для веб-службы .Net и привело к ошибке HTTP 400 - Bad Request.Чтобы исправить это, я изменил имя массива пространств имен на «пространства имен», которые исправили способ генерации документов SOAP.

...