qw0907
快跑蜗牛哥
采纳率100%
2018-02-02 02:18

java跨域调用WebService问题求助(在浏览器上可以访问)

20
已采纳

页面上要实现 查询功能,接口由第三方提供,
提供的信息如下:

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文件转成本地类,然后像本地类一样调用,
不能输入参数,求一个例子。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • liu13816947142 lyter1214 3年前

    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);
        }
    
    }
    
    点赞 评论 复制链接分享
  • zhuizhu1992 释放想象力 3年前

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

    点赞 评论 复制链接分享
  • suiyilp suiyilp 3年前

    以前用过点,就用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();
            }       
        }
    
    
    ![图片说明](https://img-ask.csdn.net/upload/201802/03/1517629601_688529.jpg)
    
    点赞 评论 复制链接分享
  • zilong_zilong aperise 3年前
       作为客户端调用webservices,可以不用采用那些webservice框架,直接使用httpclient,详见我的博客http://blog.csdn.net/zilong_zilong/article/details/53932667
    
    点赞 评论 复制链接分享
  • qq_38654191 帝海哥 3年前

    下载一个Apache-cxf的插件,然后用eclipse生成了接口客户端的代码,然后把代码放在项目里就可以了。。。
    生成的代码里的wsdl地址是用来连接服务器用的,如果服务器地址有改变的时候,直接改地址就可以了。

    点赞 评论 复制链接分享
  • qw0907 快跑蜗牛哥 3年前

    @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");

    点赞 评论 复制链接分享
  • zhushiyao123 我才是六子 3年前

    //组装参数
    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());
    }

    点赞 评论 复制链接分享