小弟刚刚开始自学java开发web service,现在用java调用一个服务,通过ip地址获得所在地的信息,代码如下:
public class TestWebService {
private static String endPoint = "http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx";
private static String targetNameSpace = "www.webxml.com.cn";
private static String wsHost = "http://WebXml.com.cn/";
public static void main(String[] args) {
getCountryCityByIp(*****);//调用函数,传递参数是一个ip地址
}
public static Call getCall() {//获得Call,放在了一个函数中
Service service = new Service();
Call call = null;
try {
call = (Call) service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endPoint));
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return call;
}
public static void getCountryCityByIp(String theIpAddress) {//这是调用的服务方法
Call call = getCall();
call.setOperationName(new QName(targetNameSpace, "getCountryCityByIp"));
call.setUseSOAPAction(true);
call.setSOAPActionURI(wsHost + "getCountryCityByIp");
call.addParameter(new QName(targetNameSpace, "getCountryCityByIp"),
org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN);
call.setReturnType(new QName(targetNameSpace, "getCountryCityByIp"),
String[].class);
try {
String str[] = (String[]) call
.invoke(new Object[] { **** });
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
问题是最后一个调用服务的方法中,传递的参数是正确ip地址,但是到了call.invoke中就没法解析了,这是为什么,请有经验者指点一下
2010年8月25日 11:07