利用webservice查询ip的物理地址 java实现
本文借助网站http://WebXml.com.cn提供的ip地址查询服务,利用java实现一个简单的查询,可以方便的使用。http://WebXml.com.cn支持这项服务的ip地址数据库是目前最大最全的 jar文件下载http://download.csdn.net/detail/giantpoplar/7683653 关于soap和webservice,维基百科的解释如下
具体代码如下: import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; //利用soap协议来使用webservice;导入jar文件 import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpResponseException; import org.ksoap2.transport.HttpTransportSE; import org.xmlpull.v1.XmlPullParserException; @SuppressWarnings("serial") public class Request extends JFrame { /** * @author giantpoplar * @param args */ public static void main(String[] args) { new Request(); } // 构造方法,初始化界面 public Request() { this.setTitle("tricks"); this.setSize(500,200); this.setLocation(500,100); final JTextArea jt1 = new JTextArea(); final JLabel label = new JLabel(); JButton jb1 = new JButton("查询"); // 点击时进行查询,将返回结果显示在label中 jb1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { String str = getAdress(jt1.getText()); label.setText(str); } }); GridLayout gl = new GridLayout(3,1); this.setLayout(gl); this.add(label); this.add(jt1); this.add(jb1); this.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } protected static String format(String str) { str = str.substring(str.indexOf('=') + 1); str = str.substring(str.indexOf('=') + 1); str = "物理地址: " + str.substring(0,str.indexOf(';')); return str; } @SuppressWarnings("finally") private static String getAdress(String ip) { // java利用ksoap使用webservice的具体步骤 final String NAMESPACE = "http://WebXml.com.cn/"; // 服务具体地址 final String URL = "http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx"; // METHOD_NAME和SOAP_ACTION中服务器根目录下名字一致 final String METHOD_NAME = "getCountryCityByIp"; final String SOAP_ACTION = "http://WebXml.com.cn/getCountryCityByIp"; SoapObject s = null; try { // 新建http传输对象 HttpTransportSE ht = new HttpTransportSE(URL); SoapObject rpc = new SoapObject(NAMESPACE,METHOD_NAME); // 添加属性 rpc.addProperty("theIpAddress",ip); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.bodyOut = rpc; envelope.dotNet = true; envelope.setOutputSoapObject(rpc); ht.call(SOAP_ACTION,envelope); // 获取响应结果 s = (SoapObject) envelope.getResponse(); } catch (HttpResponseException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } finally { return format(s.toString()); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |