2011-08-19 5 views
1

는이 같은 빈 몸 봉투를 보낼 :Android ksoap2 빈 몸체로 봉투를 보냅니 까?

 <v:Envelope xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:d="http://www.w3.org/2001/XMLSchema" 
    xmlns:c="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:v="http://schemas.xmlsoap.org/soap/envelope/"> 
    <v:Header /> 
     <v:Body> 
     </v:Body> 
    </v:Envelope> 

그것이 가능 어떻게? 나는 이것을 시도했다 :

 HttpsTransportSE transport = new HttpsTransportSE(HOST, PORT, ENDPOINT, TIMEOUT); 
    SoapObject request = new SoapObject(null, null); 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);  
    envelope.setOutputSoapObject(request); 
    transport.call(SOAP_ACTION, envelope); 

나는 그것을하는 방법을 알아낼 수 없다, 아무도 도와 줄 수 있습니까?

답변

1

내가 원래 확장 내 자신의 SoapSerializationEnvelope를 생성하고이 함께 writeBody 방법을 overridering하여 문제를 해결 한 : 공용 클래스 MySoapEnvelope SoapSerializationEnvelope

{ 
    public MySoapEnvelope(int version) { 
     super(version); 
    } 
    @Override 
    public void writeBody(XmlSerializer writer) throws IOException 
    { 
     if (bodyOut!=null){ 
     super.writeBody(writer); 
     } 
    } 
} 

를 사용하려면 확장, 당신은 단지 MySoapSerializationEnvelope을 사용해야합니다 envelope.bodyOut = null로 설정하십시오.

HttpsTransportSE transport = new HttpsTransportSE(host, port, endpoint, timeout); 
MySoapEnvelope emptySoapEnvelope = new MySoapEnvelope(SoapEnvelope.VER11); 
emptySoapEnvelope.bodyOut = null; 
transport.call(methodname, emptySoapEnvelope); 

이 코드를 사용하여 새 버전을 자르려면 알고 싶지 않습니다. 원래 setEmptyEnvelope()라는 원래 SoapEnvelope에서 새로운 메서드를 만들 수 있습니다. 그러나 그것은 당신에게 달려 있습니다. 당신은 이것과 함께 할 수 있습니다. 그렇지만 사람이 이것을 이해할 수 있도록 존경할만한 문서를 만들어야합니다.

+0

이 ksoap 3.2에서 작동합니까? 나는 그것을 사용하려고했지만 여전히 body 태그 안에 빈 태그를 보냈습니다. 예 : \t < />

0

흥미 롭습니다. 무슨 일이 일어나고 있는지 프레임 워크로 디버깅하고 싶을 수도 있습니다. 수정본을 만들 수 있다면 그것을 업 스트림으로 가져 와서 새 릴리스를 잘라 드리겠습니다.

+0

나는 자신의 SoapSerializationEnvelope 후지산을 만들어 원래의 연장이와 함께 writeBody 방법을 overridering하여 문제를 해결 한 : '@Override \t 공공 무효 writeBody (XmlSerializer가 작가) IOException이 \t { \t \t 경우 (bodyOut가 발생합니다! = null) { \t \t super.writeBody (작성자); \t \t은} \t \t \t}' –

관련 문제