还是老套路上http://fhs.6617.com/getip.asmx?WSDL查看这个对外界提供的查询ip地址的webservice的描述
<
s:element
minOccurs
="
0
"
maxOccurs
="
1
"
name
="
ipaddress
"
type
="
s:string
" />
</
s:sequence
>
</
s:complexType
>
</
s:element
>
通过wsdl文档的这段描述我们可以知道 这个webservice 对外提供了一个GetIPLocation()的方法,它接受一个String类型的变量
<
s:element
minOccurs
="
0
"
maxOccurs
="
1
"
name
="
GetIPLocationResult
"
type
="
tns:ArrayOfAnyType
" />
</
s:sequence
>
</
s:complexType
>
</
s:element
>
通过这段wsdl文档的描述,我们知道 GetIPLocation()的返回值是一个数组,一个对象数组,我们可以构造一个对象数组来接收返回的ip地址查询结果
知道这些信息以后 我们就可以使用axis框架的 wsdl2java 工具将这个wsdl文档生成本地java类的框架,方式有2种,看我的 webservice 天气预报 这篇blog,然后我们就可以使用这些java类了,按照 Stubs 的开发步骤:
1.通过new得到 locator 对象
2.利用local对象的某个方法得到service对象
3.利用service对象调用其中暴露的方法GetIPLocation(),传递查询参数
4.用一个Object[] o 来接受查询结果
通过观察 wsdl2java 为我们生长的java本地类,找到其中的继承,接口等关系 我们按照上述步骤,写一个测试
package com._6617.fhs.IPService;
import java.net.InetAddress;
import java.util.Properties;
/**
* 测试ip地址
* @author Owner
*
*/
public class Client5
{
public static void main(String[] args)
{
try
{
Weather_x0020_WebServiceLocator locator= new Weather_x0020_WebServiceLocator();
Weather_x0020_WebServiceSoap service=locator.getWeather_x0020_WebServiceSoap12();
Object[] o=service.getIPLocation("117.33.53.33");
for(int i=0;i<o.length;i++)
{
System.out.println((String)o[i]);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
运行程序 将打印:
陕西省宝鸡市
电信
电信
注意:
如果你的环境使用了代理上网,那么在远程调用webservice之前 ,你应该设置代理服务器地址到系统属性下,在java中设置使用代理连接的代码是:
//加入代理地址为172.100.1.28,端口8080
Properties prop = System.getProperties();
prop.put("http.proxyHost","172.100.1.28");
prop.put("http.proxyPort","8080");
System.setProperties(prop);
把上述代码放在 测试类的 try{} 的第一句即可
我把这个查询IP地址的 WebServie 和 查询 天气预报的 WebService 放在一个页面展示 结果如下:(你可以仿照我的上一篇blog 来做这个web例子)