формат SOAP ответа - PullRequest
       24

формат SOAP ответа

0 голосов
/ 02 января 2012

Я пытаюсь создать веб-сервис для получения простого мыльного ответа на запрос ping:

<soap:Envelope>
<soap:Body>
<CustomRS attr="somevalue">
<Success/>
</CustomRS>
</soap:Body>
</soap:Envelope>

Вместо этого я получаю этот ответ

<soap:Envelope>
<soap:Body>
<PingResponse>
<CustomRS attr="somevalue">
<Success/>
</CustomRS>
</PingResponse>
</soap:Body>
</soap:Envelope>

«Ping» - это имя моего WebMethod, а CustomRS - мой сериализуемый объект ответа. Как избавиться от элемента PingResponse и просто использовать CustomRS в качестве корневого элемента?

Моя реализация

@WebService (name = '', serviceName = ''targetNamespace = '')
 @Stateless (mappedName = '')

 public class TestEjb implements Testnterface {
@SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL, parameterStyle=ParameterStyle.BARE)

@WebResult (name = "CustomRS", targetNamespace = "name space")
@WebMethod (operationName = "CustomRS")
public CustomRS_OutPut Ping( @WebParam (name = "header",Type type,
  @WebParam (name = "parameters", Param param) throws Exception
{

}

1 Ответ

0 голосов
/ 16 апреля 2012
public SoapObject soap(String METHOD_NAME, String SOAP_ACTION,
            String NAMESPACE, String URL) throws IOException,
            XmlPullParserException {
        SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); // set up
                                                                        // request
        request.addProperty("iTruckId", "1");
        request.addProperty("iLocationId", "1");// variable name, value. I got
                                                // the variable name, from the
                                                // wsdl file!
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER11); // put all required data into a soap
                                        // envelope
        envelope.setOutputSoapObject(request); // prepare request
        AndroidHttpTransport httpTransport = new AndroidHttpTransport(URL);
        httpTransport.debug = true; // this is optional, use it if you don't
                                    // want to use a packet sniffer to check
                                    // what the sent
                                    // message was (httpTransport.requestDump)
        httpTransport.call(SOAP_ACTION, envelope); // send request
        SoapObject result = (SoapObject) envelope.getResponse(); // get response
        return result;
    }
}
...