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

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

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个回答

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

liu13816947142
lyter1214 只需要引JiujiangService.java一个文件就可以了
2 年多之前 回复

下载一个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();
        }       
    }

![图片说明](https://img-ask.csdn.net/upload/201802/03/1517629601_688529.jpg)

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问