2

Axis2を使用するWebサービスにリクエストを送信する必要があります。近すぎて機能しませんが、エラーメッセージが表示され続け、SOAPXMLの構築に含まれていると確信しています。これはSOAPでした:

<?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
        <soap:Header>
            <RequestsoapHeader>
                <spId>SPID</spId>
                <spPassword>RandomPass</spPassword>
                <timeStamp>20130115160251</timeStamp>
            </RequestsoapHeader>
        </soap:Header>
        <soap:Body>
            <operation>
                <name>getSPToken</name>
                <input>http://zzz.zzz.zzz.zzz/my/redirection/url/</input>
            </operation>
        </soap:Body>
    </soap:Envelope>

アップデート!!!!今石鹸はこれです:

<?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
        <soap:Header>
            <RequestsoapHeader>
                <spId>SPID</spId>
                <spPassword>RandomPass</spPassword>
                <timeStamp>20130115160251</timeStamp>
            </RequestsoapHeader>
        </soap:Header>
        <soap:Body>
            <getSPTokenRequest>
                <SPredirectURL>http://zzz.zzz.zzz.zzz/my/redirection/url/</SPredirectURL>
            </getSPTokenRequest>
        </soap:Body>
    </soap:Envelope>

修正できない部分はBodyです。さまざまな方法で操作を呼び出そうとしました。たとえば、<operation>使用する代わりに<operation name="getSPToken">、操作を使用せずに:という名前のタグを作成しました<getSPToken>が、何も機能しません。

これは、Webサービスで呼び出そうとしている操作を説明するWSDL部分です。

    <wsdl:operation name="getSPToken">
        <soap:operation soapAction="" style="document"/>
        <wsdl:input>
            <soap:body use="literal"/>
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal"/>
        </wsdl:output>
        <wsdl:fault name="ServiceException">
            <soap:fault name="ServiceException" use="literal"/>
        </wsdl:fault>
        <wsdl:fault name="PolicyException">
            <soap:fault name="PolicyException" use="literal"/>
        </wsdl:fault>
    </wsdl:operation>

アップデート!!!これは、以前に投稿しなかったインターフェイスXML(WSDLの一部)です。

<wsdl:types>
    <xsd:schema elementFormDefault="qualified" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        targetNamespace="http://www.csapi.org/schema/parlayx/sicoweb/v1_0/local">
        <xsd:element name="getSPTokenRequest" type="osg_sicoweb_local_xsd:getSPTokenRequest"/>
        <xsd:complexType name="getSPTokenRequest">
            <xsd:sequence>
                <xsd:element name="SPredirectURL"
                    type="xsd:string" maxOccurs="1" minOccurs="1">
                    <xsd:annotation>
                        <xsd:documentation></xsd:documentation>
                    </xsd:annotation>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>

        <xsd:element name="getSPTokenResponse" type="osg_sicoweb_local_xsd:getSPTokenResponse"/>
        <xsd:complexType name="getSPTokenResponse">
            <xsd:sequence>
                <xsd:element name="SPToken" type="xsd:string"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:schema>
</wsdl:types>

そして、これは私が得ていた応答です:

HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=UTF-8
Date: Tue, 15 Jan 2013 21:10:49 GMT
Connection: close
<?xml version='1.0' encoding='UTF-8'?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Body>
            <soapenv:Fault xmlns:axis2ns73="http://schemas.xmlsoap.org/soap/envelope/">
                <faultcode>axis2ns73:Client</faultcode>
                <faultstring>The endpoint reference (EPR) for the Operation not found is http://xxx.xxx.xxx.xxx:xxx/path/to/service/ and the WSA Action = </faultstring>
                <detail />
            </soapenv:Fault>
        </soapenv:Body>
    </soapenv:Envelope>

アップデート!!!!新しい変更により、私が得ている応答は次のとおりです。

<?xml version='1.0' encoding='UTF-8'?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
        <soapenv:Body>
            <soapenv:Fault>
                <faultcode>soapenv:Server</faultcode>
                <faultstring>org.apache.axis2.databinding.ADBException: Unexpected subelement getSPTokenRequest</faultstring>
                <detail />
            </soapenv:Fault>
        </soapenv:Body>
    </soapenv:Envelope>

操作は、リダイレクトのURLを含むというgetSPToken1つのパラメーターを受け取ります。助けてください。SPredirectURL

4

1 に答える 1

1

あなたの体として、次のいずれかを試してください。

<soap:Body>
  <SPredirectURL>http://zzz.zzz.zzz.zzz/my/redirection/url/</SPredirectURL>
</soap:Body>

<soap:Body>
  <getSPTokenRequest xmlns="http://www.csapi.org/schema/parlayx/sicoweb/v1_0/local">
    <SPredirectURL>http://zzz.zzz.zzz.zzz/my/redirection/url/</SPredirectURL>
  </getSPTokenRequest>
</soap:Body>

WSDL スニペットに基づいて、Web サービス エンドポイントはメッセージにドキュメント/リテラル​​規則を使用していますが、WSDL メッセージ宣言がないと、「ベア」(最初の例) または「ラップされた」(2 番目の例) バージョンが予期されるかどうかが不明です。このアドレス (http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/) の投稿は、WSDL で記述されたさまざまな方言についての優れた洞察を提供します。

更新: wsdl:types セクション内のスキーマに基づいて、(スキーマ要素の宣言された targetNamespace 属性に基づいて) サービスによって期待される要素の完全修飾名はhttp://www.csapi.org/schema/です。 parlayx/sicoweb/v1_0/local {getSPTokenRequest}

その名前を確立する 1 つの方法 (インライン名前空間宣言) は、上記の更新された 2 番目の本文に示されています。

次の繰り返しでポストバックします。

于 2013-01-16T04:35:33.573 に答える