精华内容
下载资源
问答
  • java 调用webservice接口推送数据

    千次阅读 2019-10-25 17:18:05
    需求:扫描数据库表数据, 待发送,发送失败且次数不超过3次的的数据,推送到别的系统 通过对方提供的xml报文 拼接报文代码:public static String getXML(Map<String, Object> noSucDataMap) { String title ...

    需求:扫描数据库表数据, 待发送,发送失败且次数不超过3次的的数据,推送到别的系统
    通过对方提供的xml报文

    拼接报文代码:public static String getXML(Map<String, Object> noSucDataMap) {
    String title = noSucDataMap.get(“noticeName”) == null ? “” : noSucDataMap.get(“noticeName”).toString();
    Object projectName = noSucDataMap.get(“tenderName”) == null ? “” : noSucDataMap.get(“tenderName”).toString();
    Object RegionCode = noSucDataMap.get(“regionCode”) == null ? “” : noSucDataMap.get(“regionCode”).toString();
    Object NoticeContent = noSucDataMap.get(“noticeContent”) == null ? “” : noSucDataMap.get(“noticeContent”).toString();
    Object tenderType = noSucDataMap.get(“tenderType”) == null ? “” : noSucDataMap.get(“tenderType”).toString();
    Object createTime = noSucDataMap.get(“createTime”);
    Object bidOpenTime = noSucDataMap.get(“bid_open_time”);
    DateFormat df = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss”);
    String createTimeStr = df.format(createTime);
    String bidOpenTimeStr = “”;
    if (bidOpenTime != null) {
    bidOpenTimeStr = df.format(bidOpenTime);
    }else {
    System.out.println(“开标时间不能为空!”);
    }

        String soapXML = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n" +
                "  <soap:Body>\n" +
                "    <InsertNoticeInfo xmlns=\"http://tempuri.org/\">\n" +
                "      <userName>test</userName>\n" +
                "      <passWord>111111</passWord>\n" +
                "      <model>\n" +
                "        <NoticeInfoId>0</NoticeInfoId>\n" +
                "        <CategoryId>0</CategoryId>\n" +
                "        <NoticeType>0</NoticeType>\n" +
                "        <Title>" + title + "</Title>\n" +
                "        <Author></Author>\n" +
                "        <Source></Source>\n" +
                "        <UploadFileExplain></UploadFileExplain>\n" +
                "        <UploadFilePath></UploadFilePath>\n" +
                "        <OwnerUnit_ContactPerson></OwnerUnit_ContactPerson>\n" +
                "        <OwnerUnit_Name></OwnerUnit_Name>\n" +
                "        <OwnerUnit_Phone></OwnerUnit_Phone>\n" +
                "        <Qualification></Qualification>\n" +
                "        <Agency_Name></Agency_Name>\n" +
                "        <Agency_ContactPerson></Agency_ContactPerson>\n" +
                "        <Agency_Phone></Agency_Phone>\n" +
                "        <Tender></Tender>\n" +
                "        <TenderType>" + tenderType + "</TenderType>\n" +
                "        <RegionCode>" + RegionCode + "</RegionCode>\n" +
                "        <ProjectName>" + projectName + "</ProjectName>\n" +
                "        <ForecastSuccessfulcandidate></ForecastSuccessfulcandidate>\n" +
                "        <TransactionAmount>0</TransactionAmount>\n" +
                "        <ProjectLeader></ProjectLeader>\n" +
                "        <NoticeContent><![CDATA[" + NoticeContent + "]]></NoticeContent>\n" +
                "        <CreateTime>" + createTimeStr + "</CreateTime>\n" +
                "        <CreateUserId></CreateUserId>\n" +
                "        <TenderDeadline>" + bidOpenTimeStr + "</TenderDeadline>\n" +
                "        <Credential></Credential>\n" +
                "        <Status>0</Status>\n" +
                "        <IsSend>true</IsSend>\n" +
                "        <Scale></Scale>\n" +
                "        <BidPerson></BidPerson>\n" +
                "        <EvaluationBidExpenses>0</EvaluationBidExpenses>\n" +
                "        <State></State>\n" +
                "        <ProjectFilingUN></ProjectFilingUN>\n" +
                "        <ProjectApprovalUN></ProjectApprovalUN>\n" +
                "        <ChapterNumber>0</ChapterNumber>\n" +
                "        <BiddingScope></BiddingScope>\n" +
                "        <BidTime>" + bidOpenTimeStr + "</BidTime>\n" +
                "        <PlanTime></PlanTime>\n" +
                "        <ProjectCondition></ProjectCondition>\n" +
                "        <BidWay></BidWay>\n" +
                "        <BidAddress></BidAddress>\n" +
                "        <PublishMedia></PublishMedia>\n" +
                "        <SectionName></SectionName>\n" +
                "        <OpenAddress></OpenAddress>\n" +
                "        <FirstPerson></FirstPerson>\n" +
                "        <FirstPrice>0</FirstPrice>\n" +
                "        <FirstProjectPerson></FirstProjectPerson>\n" +
                "        <SecondPerson></SecondPerson>\n" +
                "        <SecondPrice>0</SecondPrice>\n" +
                "        <SecondProjectPerson></SecondProjectPerson>\n" +
                "        <TenderPerson></TenderPerson>\n" +
                "        <TenderPrice>0</TenderPrice>\n" +
                "        <TenderProjectPerson></TenderProjectPerson>\n" +
                "        <CreateUsername></CreateUsername>\n" +
                "        <PriceSource></PriceSource>\n" +
                "      </model>\n" +
                "      <categoryId>" + tenderType + "</categoryId>\n" +
                "      <fBytes></fBytes>\n" +
                "      <errorString></errorString>\n" +
                "    </InsertNoticeInfo>\n" +
                "  </soap:Body>\n" +
                "</soap:Envelope>";
        return soapXML;
    }
    

    //业务逻辑
    public void selLogsNoSuc() {
    List<Map<String, Object>> noSucDataList = winBidCandidateDao.selLogsNoSuc();
    // List sendSucCode = new ArrayList();
    for (int i = 0; i < noSucDataList.size(); i++) {
    Map<String, Object> noSucDataMap = noSucDataList.get(i);

            //获取报文
            String soapXML = getXML(noSucDataMap);
            WebserviceResultBean ret = sendDataAhtbaWebService(soapXML);
            int id = Integer.parseInt(String.valueOf(noSucDataMap.get("id")));
            LogsAhszbtbxxw logsAhszbtbxxwNum = winBidCandidateDao.selLogsAhsInfoById(id);
            int sendNum = logsAhszbtbxxwNum.getSendNum() + 1;
            LogsAhszbtbxxw logsAhszbtbxxwObj = new LogsAhszbtbxxw();
            logsAhszbtbxxwObj.setId(id);
            logsAhszbtbxxwObj.setSendNum(sendNum);
    
            //创建名字表对象
            LogsAhszbtbxxwDetail logsAhszbtbxxwDetail = new LogsAhszbtbxxwDetail();
            Object noticeId = noSucDataMap.get("noticeId");
            if (noticeId != null) {
                logsAhszbtbxxwDetail.setNoticeId(noticeId.toString());
            }
            logsAhszbtbxxwDetail.setNoticeId(noSucDataMap.get("noticeId").toString());
            logsAhszbtbxxwDetail.setSendTime(new Date());
            logsAhszbtbxxwDetail.setXml(soapXML);
    
            if ("true".equals(ret.getResult())) {
                logsAhszbtbxxwObj.setStates("1");
                logsAhszbtbxxwDetail.setRemarks(ret.getRemark());
                logsAhszbtbxxwDetail.setStates("1");
            } else {
                logsAhszbtbxxwObj.setStates("2");
                logsAhszbtbxxwDetail.setStates("2");
                String remark = ret.getRemark() == null ? "" : ret.getRemark();
                logsAhszbtbxxwDetail.setRemarks(ret.getResult() + remark);
    

    // logsAhszbtbxxwDetail.setRemarks();
    }
    winBidCandidateDao.updateStates(logsAhszbtbxxwObj);
    winBidCandidateDao.insertLogsDetail(logsAhszbtbxxwDetail);
    }
    System.out.println(“扫描logs_ahszbtbxxw 待发送,发送失败且次数不超过3次的公告”);
    }

    //调用接口逻辑

    public static WebserviceResultBean sendDataAhtbaWebService(String soapXML) {
    // int responseCode=500;
    WebserviceResultBean ret = new WebserviceResultBean();
    try {
    //1:创建服务地址 接口地址
    URL url = new URL(“http://60.173.235.154:9021/ahtbaWebService.asmx”);
    //2:打开到服务地址的一个连接
    try {
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    //3.1设置发送方式:POST必须大写
    connection.setRequestMethod(“POST”);
    //3.2设置数据格式:Content-type
    connection.setRequestProperty(“content-type”, “text/xml;charset=utf-8”);
    connection.setDoInput(true);
    connection.setDoOutput(true);

                //4:组织SOAP协议数据,发送给服务端
    

    // String soapXML = getXML(“1866666666”);
    byte[] b = soapXML.getBytes(); //封装数据,数据以byte方式传输
    connection.setRequestProperty(“Content-Length”, String.valueOf(b.length));

                OutputStream os = connection.getOutputStream();
                os.write(b);
    
                //5:接收服务端的响应
                int responseCode = connection.getResponseCode();
                if (200 == responseCode) {
                    InputStream is = connection.getInputStream();
                    InputStreamReader isr = new InputStreamReader(is);
                    BufferedReader br = new BufferedReader(isr);
                    StringBuilder sb = new StringBuilder();
                    String temp = null;
    
                    while (null != (temp = br.readLine())) {
                        sb.append(temp);
                    }
                    System.out.println(sb.toString());
                    String sbXML = sb.toString();
                    ret = parseSoapMessage(sbXML);
                } else {
                    ret.setResult(String.valueOf(responseCode));
                }
    

    //
    // InputStream is1 = connection.getErrorStream();
    // InputStreamReader isr1 = new InputStreamReader(is1,“utf-8”);
    // BufferedReader in = new BufferedReader(isr1);
    // String inputLine;
    // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
    // new FileOutputStream(“result.xml”)));// 将结果存放的位置
    // while ((inputLine = in.readLine()) != null)
    // {
    // System.out.println(inputLine);
    // bw.write(inputLine);
    // bw.newLine();
    // bw.close();
    // }
    // in.close();
    os.close();
    } catch (IOException e) {
    e.printStackTrace();
    }

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        return ret;
    }
    

    //解析接口返回的报文信息

    /**
     * 解析soapXML
     *
     * @param soapXML
     * @return
     */
    public static WebserviceResultBean parseSoapMessage(String soapXML) {
        WebserviceResultBean resultBean = new WebserviceResultBean();
        try {
            SOAPMessage msg = formatSoapString(soapXML);
            SOAPBody body = msg.getSOAPBody();
            Iterator<SOAPElement> iterator = body.getChildElements();
            parse(iterator, resultBean);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultBean;
    }
    

    /**
    * 把soap字符串格式化为SOAPMessage
    *
    * @param soapString
    * @return
    * @see [类、类#方法、类#成员]
    */
    private static SOAPMessage formatSoapString(String soapString) {
    MessageFactory msgFactory;
    try {
    msgFactory = MessageFactory.newInstance();
    SOAPMessage reqMsg = msgFactory.createMessage(new MimeHeaders(),
    new ByteArrayInputStream(soapString.getBytes(“UTF-8”)));
    reqMsg.saveChanges();
    return reqMsg;
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }

    /**
    * 解析soap xml
    *
    * @param iterator
    * @param resultBean
    */
    private static void parse(Iterator iterator, WebserviceResultBean resultBean) {
    while (iterator.hasNext()) {
    SOAPElement element = iterator.next();
    if (“InsertNoticeInfoResponse”.equals(element.getNodeName())) {
    Iterator it = element.getChildElements();
    SOAPElement el = null;
    while (it.hasNext()) {
    el = it.next();
    if (“InsertNoticeInfoResult”.equals(el.getLocalName())) {
    resultBean.setResult(el.getValue());
    System.out.println("#### " + el.getLocalName() + " ==== " + el.getValue());
    } else if (“errorString”.equals(el.getLocalName())) {
    resultBean.setRemark(null != el.getValue() ? el.getValue() : “”);
    System.out.println("#### " + el.getLocalName() + " ==== " + el.getValue());
    }
    }
    } else if (null == element.getValue()
    && element.getChildElements().hasNext()) {
    parse(element.getChildElements(), resultBean);
    }
    }
    }

    这里我的做的是个定时任务
    public void selLogsNoSuc(){
    System.out.println(“扫描logs_ahszbtbxxw 待发送,发送失败且次数不超过3次的公告”);
    winBidCandidateService.selLogsNoSuc();
    }

    展开全文
  • Java调用WebService接口

    2018-05-22 13:57:56
    可以测试的WebService测试地址(例如:腾讯QQ在线状态 WEB 服务 ...返回数据(String)Y = 在线;N = 离线 ;E = QQ号码错误....)以此为例1. 打开Eclipse(非My Eclipse...

    可以测试的WebService测试地址(例如:腾讯QQ在线状态 WEB 服务
     http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl

     通过输入QQ号码(String)检测QQ在线状态。返回数据(String)Y = 在线;N = 离线 ;E = QQ号码错误....)

    以此为例

    1. 打开Eclipse(非My Eclipse),新建一Java工程;

    2.Eclipse中生成webservice客户端代码,New---->Other---->Webservice---->Webservice Client,选择之前拷贝到eclipse中的wsdl路径点击finish,这样eclipse就帮我们自动生成了webservice的客户端,接下来只需在程序中调用即可,在程序中调用eclipse自动生成的webservice客户端;



    【项目生成代码】


    【示例代码】

    import java.rmi.RemoteException;


    public class Test {


    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str ="http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx?wsdl";
    //方法1:使用 QqOnlineWebServiceSoapProxy
    QqOnlineWebServiceSoapProxy qq = new QqOnlineWebServiceSoapProxy(str) ;

    try {
    String res = qq.qqCheckOnline("75");

    System.out.println(res);
    } catch (RemoteException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    //方法2:使用Service

    // QqOnlineWebServiceSoapProxy qq = new QqOnlineWebServiceSoapProxy() ;
    // QqOnlineWebServiceSoap qss = qq.getQqOnlineWebServiceSoap();
    //
    // try {
    // String result = qss.qqCheckOnline("757346370");
    // System.out.println(result);
    // } catch (RemoteException e) {
    // // TODO Auto-generated catch block
    // e.printStackTrace();
    // }





    }


    }

    参考博客:https://blog.csdn.net/qq_14852397/article/details/52761425


    展开全文
  • java 调用webservice接口(.asmx).net

    千次阅读 2019-09-23 10:59:34
    拿到对接公司的一个接口,是用.net编写的webservice接口(.asmx),接口方会给到接口地址、方法名、参数及对方那边的返回值类型、测试数据。如果没有一下这些,那么就可以向客户那边索取。例(我这边接口方提供的数据...

    1、适应范围

       拿到对接公司的一个接口,是用.net编写的webservice接口(.asmx),接口方会给到接口地址、方法名、参数及对方那边的返回值类型、测试数据。如果没有一下这些,那么就可以向客户那边索取。例(我这边接口方提供的数据):

     

    2、拿到地址后访问,点击网址查看是否可以访问,并找到对应的方法(以下蓝色字体就是方法名:He'l'loWorld、QzjSaveEvent...

    能直接访问代表接口是通的(没有类似这样的页面,联系接口方更改),

    链接后加?wsdl可查看:

    http:// ip(调用时更改) /WebServiceCode/EventAddService.asmx?wsdl

    3、编写代码

    ① 添加maven文件依赖(以下涉及到测试会用到的代码,宁愿多写,不少写

    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis</groupId>
        <artifactId>axis</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>axis</groupId>
        <artifactId>axis-jaxrpc</artifactId>
        <version>1.4</version>
    </dependency>
    <dependency>
        <groupId>commons-discovery</groupId>
        <artifactId>commons-discovery</artifactId>
        <version>0.5</version>
    </dependency>
    <dependency>
        <groupId>wsdl4j</groupId>
        <artifactId>wsdl4j</artifactId>
        <version>1.6.3</version>
    </dependency>
    <!-- jsonObject的jar包 -->
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.9.3</version>
    </dependency>
    <!-- org.json.JSONObject需要的jar包-->
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20190722</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient -->
    <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>3.1</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/javax.mail/mail -->
    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4.7</version>
    </dependency>

    ② java代码编写

    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import javax.xml.namespace.QName;

    public class SoapWebService {
        public static void main(String[] args){
            // webService链接地址
            String url = "https://mfg-apac.johnsoncontrols.cn/WX_MES40_API/SmartMES_API_JCAC_Ext.asmx";
            // server域名地址,为了统一规范,一般都是这个域名
            String soapaction = "http://tempuri.org/";
            // 方法名
            String methodName = "Return_DT_Json";
            // 用户提供测试的两个参数
            String DataSource = "PRM_JCI_Operation_Impeller";
            String Scope = "";  // 以接口方提供测试数据为准,我这里为""是接口方要求
            Service service = new Service();
            try{
                Call call = (Call) service.createCall();
                call.setTargetEndpointAddress(url);
                // 设置要调用哪个方法
                call.setOperationName(new QName(soapaction,methodName));
                // 设置要传递的参数名
                call.addParameter(new QName(soapaction,"DataSource"),org.apache.axis.encoding.XMLType.XSD_STRING,
                        javax.xml.rpc.ParameterMode.IN);
                call.addParameter(new QName(soapaction,"Scope"),org.apache.axis.encoding.XMLType.XSD_STRING,
                        javax.xml.rpc.ParameterMode.IN);
                // 提供标准类型
                call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
                call.setUseSOAPAction(true);
                call.setSOAPActionURI(soapaction + methodName);
                // 调用方法并传递参数
                String ref = (String)call.invoke(new Object[]{DataSource,Scope});
                System.out.println(ref);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }

    4、运行main方法,获取如下数据

    5、成功。

    如果需要给前端提供接口源码的朋友,可以给我留言,看到会及时回复。以上只是测试数据

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    以下是使用springboot开发(环境我就不介绍了,不会的看我博客中springboot环境搭建教程

    1、Controller层(为了以防你们不知道在哪个包下,我也把包放上去

    import com.example.demo.pojo.ResultMap;
    import com.example.demo.service.SoapService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    import java.util.Map;
    
    @RestController  // 自动将接口返回值转成json形式,不用在方法上写@ResponseBody注解,代表全局
    @RequestMapping("/select")
    public class SoapWebServiceConnect {
        /**
         * @url  https://mfg-apac.johnsoncontrols.cn/WX_MES40_API/SmartMES_API_JCAC_Ext.asmx
         * @method Return_DT_Data
         * @param DataSource
         * @param Scope
         */
        @Autowired
        private SoapService soapService;
    
         @RequestMapping("/soap")
         public ResultMap selectSoap(){
             // DataSource(表名)  Scope(筛选条件)
             Map<String,Object> result =  soapService.selectSoap();
             // 将结果存放到ResultMap中,返回成功标志
             ResultMap resultMap = new ResultMap("OK","success",result);
             return resultMap;
        }
    }

    2、Service层

    import com.example.demo.dao.SoapDao;
    import com.example.demo.pojo.DataScope;
    import org.apache.axis.client.Call;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import javax.xml.namespace.QName;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    @Service
    public class SoapService {
        @Autowired
        private SoapDao soapDao;
        public static final String URL = "https://mfg-apac.johnsoncontrols.cn/WX_MES40_API/SmartMES_API_JCAC_Ext.asmx";
    
        public Map<String,Object> selectSoap(){
            Map<String,Object> map = new HashMap<>();
            String ref = "";
            List<DataScope> dataScopes =  soapDao.findAll();
            for (int i  = 0;i<dataScopes.size();i++){
                DataScope dataScope = dataScopes.get(i);
                Object[] params = new Object[]{dataScope.getDatasource(),dataScope.getScope()};
                ref = sendWebservice(params,URL);
                map.put(dataScope.getDatasource(),ref);
            }
            return map;
        }
    
        // 远程webService接口拿到用户那边数据
        public static String sendWebservice(Object[] params, String soapUrl) {
            String soapaction = "http://tempuri.org/"; // 域名,这是在server定义的
            String operationName = "Return_DT_Json";// 调用方法名
            org.apache.axis.client.Service service = new org.apache.axis.client.Service();
            String ret = "";
            try {
                Call call = (Call) service.createCall();
                call.setTargetEndpointAddress(soapUrl);
                call.setOperationName(new QName(soapaction, operationName)); // 设置要调用哪个方法
                call.addParameter(new QName(soapaction, "DataSource"), // 设置要传递的参数1
                        org.apache.axis.encoding.XMLType.XSD_STRING,
                        javax.xml.rpc.ParameterMode.IN);
                call.addParameter(new QName(soapaction, "Scope"), // 设置要传递的参数2
                        org.apache.axis.encoding.XMLType.XSD_STRING,
                        javax.xml.rpc.ParameterMode.IN);
    
                call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);// (标准的类型)
                call.setUseSOAPAction(true);
                call.setSOAPActionURI(soapaction + operationName);
    
                ret = (String) call.invoke(params);// 调用方法并传递参数
    
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return ret;
        }
    }
    

    3、Dao层

    import com.example.demo.pojo.DataScope;
    import org.springframework.data.jpa.repository.JpaRepository;
    // DataScope是实体类,Integer是Id类型
    public interface SoapDao extends JpaRepository<DataScope,Integer> {
    
    }

    4、实体类(调用webService是客户那边写好的接口,这个实体类只是客户提供给我们的参数,DataSource,Scope),为什么要给数据库定义呢?那是因为,客户那边DataSource对应的数据有17条,Scope也是17条。那么我如果在代码里写死直接将值向客户那边传,相当于要调用17次。不灵活,且不易维护,所以写到数据库,只需查询一次,然后将数据遍历出来,放到map中以json形式返回给前端进行处理即可。最重要的一点是,不用传多次,传遍历出来的数据只需在循环中调用一次即可

    
    实体类1(与数据库对应关系)
    import javax.persistence.*;
    
    @Table(name="datascope")
    @Entity
    public class DataScope {
        @Id
        @GeneratedValue // 默认AUTO 自增长
        private Integer id;
    
        @Basic // 与数据库映射关系
        @Column(name="datasource",nullable = false)
        private String datasource;
    
        @Basic // 与数据库映射关系
        @Column(name="scope",nullable = false)
        private String scope;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getDatasource() {
            return datasource;
        }
    
        public void setDatasource(String datasource) {
            this.datasource = datasource;
        }
    
        public String getScope() {
            return scope;
        }
    
        public void setScope(String scope) {
            this.scope = scope;
        }
    }

    实体类2Map封装并返回状态码

    import java.util.Map;
    
    public class ResultMap {
        // 状态码
        private String status;
        // 返回成功标志
        private String suceess;
        // map 封装
        private Map<String,Object> result;
        // 有参
        public ResultMap(String status, String suceess, Map<String, Object> result) {
            this.status = status;
            this.suceess = suceess;
            this.result = result;
        }
        // 默认参
        public ResultMap() {
        }
    
        // set get
    
        public String getStatus() {
            return status;
        }
    
        public void setStatus(String status) {
            this.status = status;
        }
    
        public String getSuceess() {
            return suceess;
        }
    
        public void setSuceess(String suceess) {
            this.suceess = suceess;
        }
    
        public Map<String, Object> getResult() {
            return result;
        }
    
        public void setResult(Map<String, Object> result) {
            this.result = result;
        }
    }

    5、数据库

    6、给前端提供接口(前提在同一个局域网下)

    不知道的话,cmd-->ipconfig

    例:192.168.1.117:8088/select/soap

    此时就可以将连接以文档的形式给前端,进行测试了。(不会写接口给前端?别慌,看我下一篇文章

    声明:若前端请求地址发生跨域如下图报错,可以尝试在Controller层添加一个注解-->@CrossOrigin注解,并重启服务器,重新进行访问。

    错误信息: No 'Access-Control-Allow-Origin' header is present on the requested resource ...

    解决详情:https://blog.csdn.net/qq_37647296/article/details/89401499

     

    展开全文
  • 实习期间一个任务需要对接一个webservice接口,获取返回的数据并更新到自己的数据库中 学习参考 webservice基础 个人总结 webservice是基于http的 只不过请求体是为xml格式 传递的数据格式: <Envelope> &...

    背景

    实习期间一个任务需要对接一个webservice接口,获取返回的数据并更新到自己的数据库中

    学习参考

    webservice基础

    个人总结

    • webservice是基于http的
    • 只不过请求体是为xml格式
    • 传递的数据格式:
    <Envelope>
          <Header></Header>
          <Body>
               <方法名>
               		方法参数
            </方法名>
          </Body>
    </Envelope>
    
    • 示例
     String str = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\">" +
                "   <soapenv:Header/>" +
                "   <soapenv:Body>" +
                "      <tem:methodName>" +
                "         <tem:key>value</tem:key>" +
                "      </tem:methodName>" +
                "   </soapenv:Body>" +
                "</soapenv:Envelope>";
    
    • 通过URLConnect调用webservice服务,获取数据
    		String responseBody = "";
            try {
                // 1 指定WebService服务的请求地址:
                String wsUrl = “host/serviceAddress”
                // 2 创建URL:
                URL url = new URL(wsUrl);
                // 3 建立连接,并将连接强转为Http连接
                URLConnection conn = url.openConnection();
                HttpURLConnection con = (HttpURLConnection) conn;
    
                //设置请求方式和请求头:
                con.setDoInput(true); // 是否有入参
                con.setDoOutput(true); // 是否有出参
                con.setRequestMethod("POST"); // 设置请求方式
                con.setRequestProperty("content-type", "text/xml;charset=UTF-8");
    			//设置请求体
    			String requestBody = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\">" +
                "   <soapenv:Header/>" +
                "   <soapenv:Body>" +
                "      <tem:methodName>" +
                "         <tem:key>value</tem:key>" +
                "      </tem:methodName>" +
                "   </soapenv:Body>" +
                "</soapenv:Envelope>";
    
                // 6,通过流的方式将请求体发送出去:
                OutputStream out = con.getOutputStream();
                out.write(requestBody.getBytes());
                out.close();
                // 7,服务端返回正常:
                int code = con.getResponseCode();
                if (code == 200) {// 服务端返回正常
                    InputStream is = con.getInputStream();
                    byte[] b = new byte[1024];
                    StringBuffer sb = new StringBuffer();
                    int len = 0;
                    while ((len = is.read(b)) != -1) {
                        String str = new String(b, 0, len, "UTF-8");
                        sb.append(str);
                    }
                    responseBody = sb.toString();
                    // responseBody中的数据格式为xml
                    is.close();
                }
                con.disconnect();
            } catch (Exception e) {
                e.printStackTrace();
            }
    
    		//使用hutool工具类,取出在xml结点中的最终数据
    		JSONObject json = XML.toJSONObject(responseBody);
            responseBody = json.getJSONObject("soap:Envelope").getJSONObject("soap:Body").getJSONObject("XXXResponse").getJSONObject("XXXResult").get("Result");
    
    
    展开全文
  • webservice服务接口调用 网站http://www.webxml.com.cn/zh_cn/web_services.aspx提供了天气查询、手机号归属地、开放式基金数据、航班、火车时刻表等webservice服务。可通过wsimport将wsdl转为java代码的webservice...
  • 简单的说,WebService就是一种跨编程语言和跨操作系统平台的远程调用技术。所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用其他编程语言编写,反之亦然。跨操作系统平台则是指...
  • Javawebservice方式调用SAP接口传输数据的pdf文档,仅供参考!
  • JAVA使用http请求,实现webservice接口数据调用 前言 第一次接触webservice的调用,在经过了这个过程之后,不得不说,比较麻烦。总结一下网上的各种方案 1、直接AXIS调用远程的web service 2、直接SOAP调用远程的...
  • java调用webservice 第三方接口

    千次阅读 2018-12-29 14:39:12
    Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都...
  • 一下有几种方法,可以参考一下。 第一种是HttpURLConnection...接口文档如下:以下是公共对外开放的查询手机号归属地的一个借口文档: WSDL:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 可以...
  • 在开发过程中,涉及到多系统的部分数据交互,找了一些相关资料选定较为成熟的webservice,web可以实现不同平台、语言的交互,主要基于:HTTP+ XML(WSDL)方式。明细如下: 1、我们首先进行模拟一个服务端,进行...
  • 基于CXF开发的java接口,部署到服务器上,偶尔出现这样的问题:客户那边提示我已经调用接口了,但是我没有收到返回值,也没有生成调用日志。 调用客户接口之前,首先我会将收到的参数封装成json字符串,然后将...
  • Java调用Webservice接口的方法

    千次阅读 2014-08-20 09:35:25
    WebService是基于Web的服务,WebService使用SOAP协议实现跨编程语言和跨操作系统平台,接收和响应外部系统的某种请求,从而实现远程调用。WebService采用HTTP协议传输... 最近自己在项目中,调用webService接口常用到
  • 普遍程序员在网上找到通过java调用webservice接口的方式 1.第一种方式仅仅只是用于return结果比较简单的时候,而且感觉方式有些古板和生硬 2.类似与使用xfire方式,也显得并不是让刚接触webservice的程序员,尽快...
  • Java WebService接口生成和调用 图文详解

    万次阅读 多人点赞 2017-04-22 10:48:24
    webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或...
  • 我要用java调用WebService (被调用的是一个短信接口下面给详细说明)希望能按照这个 那边给我的文档:接口原型:sendMessage ();接口路径:http://58.53.194.80/swdx/services/APService?wsdl【参数说明】:参数名称...
  • java调用WebService接口:WebXml前言一、选一个web接口作为案例二、查看接口文档1.查看支持的协议2.确认接口地址与参数三、编码1.配置RestTemplate2.引入库2.读入数据总结新的改变功能快捷键合理的创建标题,有助于...
  • 最近Java后台使用HttpURLConnection调用webservice接口时,返回500错误,代码如下(URL/SOAPAction等使用的假数据) public void callInterface() throws IOException{ try { //第一步:创建服务地址 ...
  • Java开发中webservice接口调用

    千次阅读 2018-01-11 11:09:38
    在两个项目中都有webservice接口,实现与第三方的erp或crm系统进行数据交互,两个项目接口的区别是一个需要头文件的账号密码验证,另一个不需要。 一、本地导入.wsdl文件,生成本地类; package ...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 298
精华内容 119
关键字:

java调用webservice接口数据

java 订阅