Hello
i'm trying to solve this issue but currently can't
this is the soap response i receive at SoapUI from the endpoint:
see at the xmlns:soapenc, something is wrong because i think that the endpoint code is OKCode:<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="soapenc"> <soapenv:Body> <urn:GetRPCMethodsResponse xmlns:urn="urn:dslforum-org:cwmp-1-1"> <MethodList soapenc:arrayType="xsd:string[5]"> <string>Inform</string> <string>GetRPCMethods</string> <string>TransferComplete</string> <string>AutonomousTransferComplete</string> <string>RequestDownload</string> </MethodList> </urn:GetRPCMethodsResponse> </soapenv:Body> </soapenv:Envelope>
Code:package endpoints; import org.jdom.Element; public class GetRPCMethods extends endpointBase{ private int longArray = 0; private void incArray(){ longArray++; } private String getArray(){ String respuesta="["+Integer.toString(longArray)+"]"; longArray=0; return respuesta; } private void agregarMetodo(String nombre, Element padre){ Element metodo = new Element("string"); metodo.setText(nombre); padre.addContent(metodo); incArray(); } @Override protected Element invokeInternal(Element element) throws Exception { pruebaNS(); System.out.println("GetRPCMethods Recibido"); Element rootElement = new Element("GetRPCMethodsResponse",urn); Element listado = new Element("MethodList"); agregarMetodo("Inform",listado); agregarMetodo("GetRPCMethods",listado); agregarMetodo("TransferComplete",listado); agregarMetodo("AutonomousTransferComplete",listado); agregarMetodo("RequestDownload",listado); System.out.println(soapenc.getPrefix()); System.out.println(soapenc.getURI()); listado.setAttribute("arrayType","string"+getArray(),soapenc); rootElement.addContent(listado); return rootElement; } }and the log information ....Code:package endpoints; import java.io.IOException; import org.jdom.Document; import org.jdom.Element; import org.jdom.Namespace; import org.jdom.output.XMLOutputter; import org.springframework.ws.server.endpoint.AbstractJDomPayloadEndpoint; public abstract class endpointBase extends AbstractJDomPayloadEndpoint{ protected final Namespace xsd = Namespace.getNamespace("xsd","http://www.w3.org/2001/XMLSchema"); protected final Namespace soapenv = Namespace.getNamespace("soapenv", "http://schemas.xmlsoap.org/soap/envelope/"); protected final Namespace soapenc = Namespace.getNamespace("soapenc", "http://schemas.xmlsoap.org/soap/encoding/"); protected final Namespace urn = Namespace.getNamespace("urn", "urn:dslforum-org:cwmp-1-1"); protected void pruebaNS(){ System.out.println("--Test de NameSpaces--"); System.out.println(xsd.toString()); System.out.println(soapenv.toString()); System.out.println(soapenc.toString()); System.out.println(urn.toString()); } }
In eclipse, when i "println" the soapenc namespace both prefix and uri are correctly filled but at the soapUI the soapenc URI has become "soapenc" stringCode:17:52:59,061 INFO [STDOUT] GetRPCMethods Recibido 17:52:59,077 INFO [STDOUT] soapenc 17:52:59,077 INFO [STDOUT] http://schemas.xmlsoap.org/soap/encoding/ 17:52:59,201 ERROR [PayloadValidatingInterceptor] XML validation error on response: Undeclared namespace prefix "soapenc" (for attribute "arrayType") at [row,col {unknown-source}]: [1,141]
the soapenc namespace declaration is at the endpointBase.java and i've reviewed the endpoint code many times. i finally think that a JAR file is missing, i dont know


Reply With Quote