2017-12-07 21 views
0

私はSOAP APIから生成されたクラスを持っています。SOAPリクエストの正しいヘッダを設定する

それはこの形式で送信要求の発送:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
<SOAP-ENV:Header/> 
<SOAP-ENV:Body> 
<Login> 
<username>Ayo.K</username> 
<password>password</password> 
</Login> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

をしかし、どのようなAPIが期待することは次のとおりです。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:adm="http://example.org/test_Service"> 
<soapenv:Header/> 
<soapenv:Body> 
<adm:Login> 
<adm:username>Ayo.K</adm:username> 
<adm:password>password</adm:password> 
</adm:Login> 
</soapenv:Body> 
</soapenv:Envelope> 

マイログインクラス:

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(
     name = "", 
     propOrder = {"username", "password"} 
) 
@XmlRootElement(
     name = "Login", 
) 
public class Login { 
    protected String username; 
    protected String password; 

    public Login() { 
    } 

    public String getUsername() { 
     return this.username; 
    } 

    public void setUsername(String value) { 
     this.username = value; 
    } 

    public String getPassword() { 
     return this.password; 
    } 

    public void setPassword(String value) { 
     this.password = value; 
    } 
} 

私が追加した場合namespace = "http://example.org/test_Service"@XmlRootElementLoginクラスIの場合:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
<SOAP-ENV:Header/> 
<SOAP-ENV:Body> 
<ns3:Login xmlns:ns3="http://example.org/test_Service"> 
<username>Ayo.K</username> 
<password>password</password> 
</ns3:Login> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

適切な名前空間を適切な形式で設定するにはどうすればよいですか?

ありがとうございます!

答えて

0

最終的に私の問題の解決策を自分で見つけましたが、実装を変更する必要がありました。

最初に私はSOAPPartSOAPEnvelopeを使用してリクエストを作成しました。私は明示的に私の名前空間宣言を設定することができます。私は生成されたクラスは少しも変わってhere

次に実装をfolowed

Loginクラス

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(
     name = "", 
     propOrder = {"username", "password"} 
) 
@XmlRootElement(
     name = "Login", 
     namespace = "http://example.org/test_Service" 
) 
public class Login { 
    protected String username; 
    protected String password; 

    public Login() { 
    } 

    public String getUsername() { 
     return this.username; 
    } 

    public void setUsername(String value) { 
     this.username = value; 
    } 

    public String getPassword() { 
     return this.password; 
    } 

    public void setPassword(String value) { 
     this.password = value; 
    } 
} 
関連する問題