0

IIS 7.5 内の Windows 7 マシンで実行されている Web サービスを呼び出そうとしています。soapUI を使用してローカル マシンから Web サービスを呼び出し、別のマシンから Java クライアントを呼び出すことができ、動作します。C プログラムで gsoap フレームワークを使用してリモート マシンから Web サービスを呼び出そうとすると、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
4

1 に答える 1

0

OpenVms で GSOAP を実行していることを忘れていました。gSoap は OpenVms に移植されており、ポートにエラーがあった可能性があるため、これは重大であることが判明しました。どうやら、WSDL2H で -n オプションを使用し、gsoap クライアント ソース ファイルの生成に使用する名前空間を指定したようです。生成された .nsmap ファイル内の名前空間の配列には、配列の名前に名前空間が追加されていたため、配列が参照されているときに問題が発生しました (これは、警告を表示するように make (コマンド プロシージャ) を変更すると、コンパイル時に警告として表示されました) ; 配列を参照できなかったため、SOAP ドキュメントから除外された名前空間が .Net Web サービスに受け入れられず、HTTP 400 - Bad Request エラーが発生しました。これを修正するには、

于 2011-08-30T20:16:00.953 に答える