新人小疑点。调用webservice报错了。跪求解决办法 就80分了全送了
新人小问题。调用webservice报错了。跪求解决方法 就80分了全送了
刚学java,想调用一个webservice.用的是axis2
代码很简单
public String ValidateLogin(String userName, String passWord)
throws AxisFault {
RPCServiceClient client = new RPCServiceClient();
Options options = client.getOptions();
EndpointReference reference = new EndpointReference(
"http://test.com/login.asmx?WSDL"); //这个wsdl是用.NET写的,很简单。没问题,浏览器能调用
options.setAction("http://tempuri.org/ValidateLogin");
options.setTo(reference);
// 制定参数值 传两个参数过去
Object[] params = new Object[] { userName, passWord };
// 制定方法返回值
Class[] classes = new Class[] { String.class };
// 获取调用方法的命名空间
QName funNamespace = new QName("http://tempuri.org/ValidateLogin");
Object content = client.invokeBlocking(funNamespace, params, classes)[0]; //到这时就不行了
return content.toString();
}
现在提示
type Exception report
message org.apache.axis2.AxisFault: Connection timed out: connect
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: org.apache.axis2.AxisFault: Connection timed out: connect
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
------解决方案--------------------
QName funNamespace = new QName("http://tempuri.org/ValidateLogin");
这个Namespace不可能是正确的。正确的应该是"http://tempuri.org/"
EndpointReference reference = new EndpointReference("http://test.com/login.asmx?WSDL");
看完这个我收回上面的话的后半句,是什么你自己去调试把。
------解决方案--------------------
ie 里面看看 空间 和 wsdl 的具体地址
------解决方案--------------------
QName funNamespace = new QName("http://tempuri.org/ValidateLogin");改为:
QName funNamespace = new QName("http://tempuri.org/",“ValidateLogin”);
------解决方案--------------------
地址
------解决方案--------------------
亲,直接用Eclipse自动生成客户端代码进行测试。
------解决方案--------------------
刚学java,想调用一个webservice.用的是axis2
代码很简单
public String ValidateLogin(String userName, String passWord)
throws AxisFault {
RPCServiceClient client = new RPCServiceClient();
Options options = client.getOptions();
EndpointReference reference = new EndpointReference(
"http://test.com/login.asmx?WSDL"); //这个wsdl是用.NET写的,很简单。没问题,浏览器能调用
options.setAction("http://tempuri.org/ValidateLogin");
options.setTo(reference);
// 制定参数值 传两个参数过去
Object[] params = new Object[] { userName, passWord };
// 制定方法返回值
Class[] classes = new Class[] { String.class };
// 获取调用方法的命名空间
QName funNamespace = new QName("http://tempuri.org/ValidateLogin");
Object content = client.invokeBlocking(funNamespace, params, classes)[0]; //到这时就不行了
return content.toString();
}
现在提示
type Exception report
message org.apache.axis2.AxisFault: Connection timed out: connect
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: org.apache.axis2.AxisFault: Connection timed out: connect
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:460)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
------解决方案--------------------
QName funNamespace = new QName("http://tempuri.org/ValidateLogin");
这个Namespace不可能是正确的。正确的应该是"http://tempuri.org/"
EndpointReference reference = new EndpointReference("http://test.com/login.asmx?WSDL");
看完这个我收回上面的话的后半句,是什么你自己去调试把。
------解决方案--------------------
ie 里面看看 空间 和 wsdl 的具体地址
------解决方案--------------------
QName funNamespace = new QName("http://tempuri.org/ValidateLogin");改为:
QName funNamespace = new QName("http://tempuri.org/",“ValidateLogin”);
------解决方案--------------------
地址
try {
String endpoint = "http://www.webxml.com.cn/WebServices/WeatherWS.asmx";
Service service = new Service();
Call call;
call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://WebXml.com.cn/","getWeather"));
call.setReturnClass(java.lang.String[].class);
call.addParameter(new QName("http://WebXml.com.cn/", "theCityCode"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.addParameter(new QName("http://WebXml.com.cn/", "theUserID"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://WebXml.com.cn/getWeather");
String[] results = (String[]) call.invoke(new Object[] { "", "" });
if (null != results) {
for (int i = 0; i < results.length; i++) {
System.out.println(results[i]);
}
}
} catch (Exception e) {
e.printStackTrace();
}
------解决方案--------------------
亲,直接用Eclipse自动生成客户端代码进行测试。
------解决方案--------------------
public class AxisClient {
public static void main(String[] args) throws Exception {
String targetEndPoint = "http://localhost:8080/Asix2Demo/services/HelloWorld";
Service ser = new Service();
try {
Call call = (Call) ser.createCall();
call.setTargetEndpointAddress(targetEndPoint);
call.setOperationName(new QName(targetEndPoint, "hello" ));
call.setOperation("hello");
String result = (String) call.invoke(new Object[] { new String("test") });