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; 
    } 
} 

Login 클래스의 경우 namespace = "http://example.org/test_Service"에서 @XmlRootElement까지 얻을 수 있습니다.

<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; 
    } 
}