Impossible de créer le message SOAP en raison de l'exception: lecteur XML erreur: com.la cct.wstx.exc.WstxParsingException: non Déclarées préfixe d'espace de nom “ws”
J'ai créé le service web à l'aide de JAX-WS. Quand je accéder au service web reçois réponse suivante:
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"><faultcode>S:Client</faultcode><faultstring>Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxParsingException: Undeclared namespace prefix "ws"
at [row,col {unknown-source}]: [1,169]</faultstring></S:Fault></S:Body></S:Envelope>
Mon service web est:
@WebService
public interface HelloService {
@WebMethod
String Hello(@WebParam(name = "name")String msg);
}
public class HelloServiceIml implements HelloService {
@Override
String Hello(String msg){
return "Hello" + msg;
}
}
public class Mainws {
/**
* @param args
*/
public static void main(String[] args) {
Endpoint.publish("http://localhost:8085/hello", new HelloServiceIml());
}
}
Programme Client:
public class PostSoap {
public static void main(String[] args) throws Exception {
//Get target URL
String strURL = "http://localhost:8085/HelloService";
//Get SOAP action
String strSoapAction = "SOAPAction";
//Get file to be posted
String strXML = "<?xml version=\"1.0\" encoding=\"windows-1251\"?> " +
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\"> " +
"<soapenv:Header/> " +
"<soapenv:Body> <ws:Hello> " +
" <name>John</name> " +
" </ws:Hello> </soapenv:Body> </soapenv:Envelope> ";
//Prepare HTTP post
PostMethod post = new PostMethod(strURL);
post.setRequestBody(strXML);
post.setRequestHeader("Content-Type", "text/xml");
//consult documentation for your web service
post.setRequestHeader("SOAPAction", strSoapAction);
//Get HTTP client
HttpClient httpclient = new HttpClient();
httpclient.getParams().setAuthenticationPreemptive(true);
httpclient.getState().setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("user", "pwd"));
//Execute request
try {
int result = httpclient.executeMethod(post);
//Display status code
System.out.println("Response status code: " + result);
//Display response
System.out.println("Response body: ");
System.out.println(post.getResponseBodyAsString());
} finally {
//Release current connection to the connection pool once you are done
post.releaseConnection();
}
}
}
Merci de m'aider à résoudre le problème.
OriginalL'auteur lakshmi | 2013-07-11
Vous devez vous connecter pour publier un commentaire.
Il est là,
Vous avez ws: espace de noms, mais vous n'avez pas déclaré que l'espace de noms n'importe où.
Vous devriez avoir un schéma de votre service web par exemple (à partir de springsource)
ou
Voir: http://static.springsource.org/spring-ws/site/reference/html/tutorial.html
OriginalL'auteur Papasmile