页面上要实现 查询功能,接口由第三方提供,
提供的信息如下:
1.接口地址
http://lawnew.jxsf.gov.cn/flfw-fw/webservice/jiujiang?wsdl
targetNamespace = "http://service.webservice.zsxt.com/"
接口1 查公证处
接口名:findGzcAll
参数:{"pageNum":"1","pageSize":"15"}
字段名 类型 长度 备注
pageNum int - 第几页
pageSize int - 每页显示的条数
接口2 根据no查某一个公证处
接口名:findGzcByNo
参数:{"no":"1"}
字段名 类型 长度 备注
no int — 公证处的编码
返回字段注释
字段名 备注
no 主键
name 律师事务所名称
nameofpath 地址
tel 电话
img 图片地址
mapx 经度
mapy 纬度
现求个例子可以获得接口的信息,没有调用过wsdl ,
按网上的 例子
wsdl2java把WSDL文件转成本地类,然后像本地类一样调用,
不能输入参数,求一个例子。
wsimport -s . http://lawnew.jxsf.gov.cn/flfw-fw/webservice/jiujiang?wsdl
先把生成的文件导入项目
import com.zsxt.webservice.service.JiujiangService;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
/**
*
* @author Administrator
*/
public class Demo {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws MalformedURLException{
// TODO code application logic here
URL url = new URL("http://lawnew.jxsf.gov.cn/flfw-fw/webservice/jiujiang?wsdl");
QName qName = new QName("http://service.webservice.zsxt.com/","jiujiangServiceService");
Service service = Service.create(url,qName);
JiujiangService jiujiangService = service.getPort(new QName("http://service.webservice.zsxt.com/","jiujiangServicePort"), JiujiangService.class);
String findGzcAll = jiujiangService.findGzcAll("{\"pageNum\":\"1\",\"pageSize\":\"15\"}");
System.out.println(findGzcAll);
}
}
//组装参数
Map requestMap = new HashMap();
requestMap.put("requestXml", "");
MessageFactory messageFactory = MessageFactory.newInstance();
//转soap
SOAPMessage message = messageFactory.createMessage();
String url = "";
try{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
message.writeTo(baos);
logger.debug(new String(baos.toByteArray(), "utf-8"));
}catch (IOException e) {
throw new Exception("上送报文处理异常:" + e.getMessage());
}
SOAPConnectionFactory soapFactory = SOAPConnectionFactory.newInstance();
SOAPMessage response = null;
try (SOAPConnection con = soapFactory.createConnection();){
//发送返回
URL endpoint = new URL(url);
response = con.call(message, endpoint);//返回
ByteArrayOutputStream retBaos = new ByteArrayOutputStream();
response.writeTo(retBaos);
} catch (Exception e) {
throw new Exception("上送报文处理异常:" + e.getMessage());
}
@lyter1214
请教一下 既然都已生成了相关Java文件,为何还要再次 引入 接口文件?
在 网上 看其他例子,好像 不用再次 引入 wsdl文件的。
URL url = new URL("http://lawnew.jxsf.gov.cn/flfw-fw/webservice/jiujiang?wsdl");
QName qName = new QName("http://service.webservice.zsxt.com/","jiujiangServiceService");
下载一个Apache-cxf的插件,然后用eclipse生成了接口客户端的代码,然后把代码放在项目里就可以了。。。
生成的代码里的wsdl地址是用来连接服务器用的,如果服务器地址有改变的时候,直接改地址就可以了。
作为客户端调用webservices,可以不用采用那些webservice框架,直接使用httpclient,详见我的博客http://blog.csdn.net/zilong_zilong/article/details/53932667
以前用过点,就用eclipse自带的axis插件,输入url后自动生成的本地类,然后调用:
public static void main(String[] args) {
JiujiangService service=new JiujiangServiceProxy();
try {
String res=service.findGzcAll("{\"pageNum\":\"1\",\"pageSize\":\"15\"}");
System.out.println(res);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

看我的文章, 7种方式实现WebService, 有详细的注释: http://blog.csdn.net/zhuizhu1992/article/details/79224100