当前位置: 首页 > news >正文

网站app推广怎么做中国建设厅网站

网站app推广怎么做,中国建设厅网站,wordpress 点餐,新出的app推广在哪找作者所在公司的系统间的信息交互是通过webservice完成。如#xff1a;MES与SAP的交互#xff0c;MES与WMS的交换#xff0c;MES与SRM的交互#xff0c;MES与IOT的交互等。 MES是用.NET VS2008 C#写的#xff0c;调用webservice很简单#xff0c;这里不再赘述。如有想了解…作者所在公司的系统间的信息交互是通过webservice完成。如MES与SAP的交互MES与WMS的交换MES与SRM的交互MES与IOT的交互等。 MES是用.NET VS2008 C#写的调用webservice很简单这里不再赘述。如有想了解的可以私信作者。 此篇文章主要介绍IOT平台的怎么调用webservice。 作者所在公司的IOT平台是基于SpringBoot框架开发的。 环境要求仅参考可能别的版本也行只是作者本次用的是以下版本 工具版本Java-jdk java version 1.8.0_161 Java(TM) SE Runtime Environment (build 1.8.0_161-b12)ideaIntelliJ IDEA 2019.2以上git2.30及以上Mavenapache-maven-3.6.3 SpringBoot框架不再赘述了作者另一篇文章有做入门介绍本篇文章主要写java的SpringBoot架构如果调用webserviceXML SpringBoot学习笔记-CSDN博客 1.先决条件 依赖引用 dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-web-services/artifactId /dependency 2.结构创建 Bean类中创建与soapui中结构相同的请求类和返回类。 注意如果XML中的字段名称与Java类中的字段名称不同要用到以下几个注解。 XmlRootElement(name XML根节点名称) XmlElementWrapper(name XML中LIst节点名称) XmlElement(name XML中普通节点名称) 这些注解可以帮助SpringBoot结构将XML中的字段反射到Java类中的字段。 3.写Controller Controller层没什么特别的正常写就行因为传入参数是json所以用PostMapping的方法 4.写Service层 Service层的接口也正常写就行返回一个MESResponse类型的对象 重点是Service的实现层 整体思路通过xml调用MES系统提供的服务将MES系统返回的信息流先转换成字符串再反射到java的对象中。 下面贴上实现层的代码供大家参考 package com.zjtc.qmsquality.FPYData.service;import com.google.common.io.CharStreams; import com.zjtc.qmsquality.FPYData.Util.EntityUtil; import com.zjtc.qmsquality.FPYData.bean.MESRequest; import com.zjtc.qmsquality.FPYData.bean.MESRsp; import org.springframework.stereotype.Service;import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL;Service public class FPYDataServiceImpl implements FPYDataService{public static final String targetUrl http://172.18.3.67:8020/MesFrameWork.asmx?wsdl; //测试Overridepublic MESRsp getFPYData(String no){//调用MES接口查询数据MESRsp mesResponse new MESRsp();try {MESRequest mesRequest new MESRequest();mesRequest.setNo(no);mesResponse sendMessage(no);} catch (Exception e) {mesResponse.setResult(NG);mesResponse.setMessage(e.toString());}return mesResponse;}public static String getDataFromMESSystem(String no,int rflag) {// 根据上面的XSDL文档封装请求参数String strParameter ?xml version\1.0\ encoding\UTF-8\?\n soapenv:Envelope xmlns:soapenv\http://schemas.xmlsoap.org/soap/envelope/\ xmlns:dev\http://device.service.moresoft.com/\\n soapenv:Header/\n soapenv:Body\n dev:IOTTOMES\n dev:resBody\n dev:rFlagrflag/dev:rFlag\n dev:NO no /dev:NO\n\n /dev:resBody\n /dev:IOTTOMES\n /soapenv:Body\n /soapenv:Envelope;System.out.println(strParameter : strParameter);return strParameter;}public static MESRsp sendMessage(String no) throws Exception {try {URL url new URL(targetUrl);OutputStreamWriter wr null;HttpURLConnection conn (HttpURLConnection) url.openConnection();String data getDataFromMESSystem(no,2);System.out.println(data : data);conn.setRequestProperty(Content-Length, String.valueOf(data.getBytes().length));conn.setRequestProperty(Content-Type, text/xml;charsetutf-8);conn.setDoOutput(true);conn.setConnectTimeout(1000 * 20);conn.setReadTimeout(1000 * 20);if(data!null data.toString().trim().length()0){wr new OutputStreamWriter(conn.getOutputStream(),UTF-8);wr.write(data);wr.flush();}String result CharStreams.toString(new InputStreamReader(conn.getInputStream(), utf-8));System.out.println(result : result);String xmlanalyzeResult(result);System.out.println(xml : xml);MESRsp mesResponse EntityUtil.xml2Entity(xml,MESRsp.class);System.out.println(mesResponse.result : mesResponse.getResult());System.out.println(mesResponse.Message : mesResponse.getMessage());System.out.println(getFpyDataList : mesResponse.getFpyDataList());return mesResponse;} catch (Exception ex) {MESRsp mesResponsenew MESRsp();mesResponse.setResult(NG);mesResponse.setMessage(ex.toString());if(mesResponse.getMessage()!nullmesResponse.getMessage().startsWith(java.net.SocketTimeout)){mesResponse.setMessage(接口超时);}return mesResponse;}}public static String analyzeResult(String result) throws Exception {int fromStrresult.indexOf(IOTTOMESResult);int toStrresult.indexOf(/IOTTOMESResponse,fromStr);String xmlresult.substring(fromStr,toStr);return xml;}}对了关于这段XSDL的文档参考soapui中的自动生成的xml文档。直接复制粘贴上去就行要什么参数就填什么参数 5.建字符串反射到java类的方法 按步骤写完第四步的朋友应该会发现EntityUtil类不存在的报错【狗头保命】不要紧接下来咱们来贴上这个类的代码就好了。作者也是抄的不过这个类不错以后就是大家的了。 package com.zjtc.qmsquality.FPYData.Util;import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.Unmarshaller; import java.io.StringReader; import java.io.StringWriter; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.List;public class EntityUtil {public static String entity2Xml(Object entity) throws JAXBException {JAXBContext context JAXBContext.newInstance(new Class[]{entity.getClass()});Marshaller marshaller context.createMarshaller();marshaller.setProperty(jaxb.formatted.output, true);marshaller.setProperty(jaxb.fragment, true);StringWriter sw new StringWriter();marshaller.marshal(entity, sw);String xml sw.toString();return xml;}public static T T xml2Entity(String xml, ClassT c) throws JAXBException {T t null;JAXBContext context JAXBContext.newInstance(c);Unmarshaller unmarshaller context.createUnmarshaller();t (T) unmarshaller.unmarshal(new StringReader(xml)); // System.out.println(12312312a: t.toString());return t;}public static T ListT resultToList(ResultSet resultSet, ClassT clazz) throws IllegalAccessException, InstantiationException, SQLException, NoSuchMethodException, InvocationTargetException, NoSuchFieldException {//创建一个 T 类型的数组ListT list new ArrayList();try {//通过反射获取对象的实例T t clazz.getConstructor().newInstance();//获取resultSet 的列的信息ResultSetMetaData metaData resultSet.getMetaData();//遍历resultSetwhile (resultSet.next()) {//遍历每一列for (int i 0; i metaData.getColumnCount(); i) {//获取列的名字String fName metaData.getColumnLabel(i 1);//因为列的名字和我们EMP中的属性名是一样的所以通过列的名字获得其EMP中属性Field field clazz.getDeclaredField(fName.toLowerCase());//因为属性是私有的所有获得其对应的set 方法。set属性名首字母大写其他小写String setName set fName.toUpperCase().substring(0, 1) fName.substring(1).toLowerCase();//因为属性的类型和set方法的参数类型一致所以可以获得set方法Method setMethod clazz.getMethod(setName, field.getType());//执行set方法把resultSet中的值传入emp中 再继续循环传值setMethod.invoke(t, resultSet.getObject(fName));}//把赋值后的对象 加入到list集合中list.add(t);}} catch (Exception e) {e.printStackTrace();throw e;}// 返回listreturn list;}public static T ListT convertObjectToList(Object object, ClassT clazz) {Field[] fields object.getClass().getDeclaredFields();ListT list new ArrayList();try {for (Field field : fields) {field.setAccessible(true);Object fieldValue field.get(object);if (fieldValue instanceof List?) {list.addAll((ListT) fieldValue);}}} catch (IllegalAccessException e) {e.printStackTrace();}return list;} }这个类笔者是作为公共类单独建了个Util软件包专门放的大家可以参考。 6.运行项目测试结果。 到这里代码就基本完成了可以运行一下代码测试一下有没有其他问题遇到问题解决问题就是了。 ps作者一开始遇到了获取xml成功但是反射成java类死活不成功的问题原因是没用对注解XmlElementWrapper(name XML中LIst节点名称) 后面加上这个注解之后就愉快的跑成功了。 下面附上运行成功和测试成功的截图 以下就是SpringBoot中调用WebserviceXML的一个简单实践。如有疑问欢迎私信骚扰。
http://www.hkea.cn/news/14522227/

相关文章:

  • 淘客网站如何建设自己数据库ui培训机构排行榜
  • 河间网站建设网站开发做什么简单
  • 云虚拟主机建设网站一定要域名贵阳网站开发推荐
  • 网站 建设 领导小组好的网站 具备
  • 重庆住建厅网站官网沈阳信息港
  • 公司网站做一年多少钱wordpress 数据库空间
  • 品牌购买平台优化技术服务
  • 贵阳拍卖网站开发公司dedecms 调用网站内部搜索
  • vue做网站免费网页源码
  • 青海西宁网站开发公司苏州工业园区教育局官网
  • 流浪猫狗救助网站开发设计公司名称变更
  • 网站域名改了帝国cms教育app定制开发
  • 做服装网站设计书莱芜百姓网
  • 重庆建站服务商网站开发教学大纲
  • 深圳建设网站软件界面设计与色彩搭配
  • 太原有网站工程公司吗wordpress主题汉化包放哪里
  • 检测asp网站死循环wordpress lovevideo
  • 成品网站源码在线常德网站建设专业品牌
  • 广州电商网站建设做优秀网站
  • 怎么做狼视听网站更改wordpress主题语言包
  • 免费的域名注册网站金华住房和城乡建设厅网站
  • 网站不备案能访问吗骨干校 建设网站
  • 网站建设实习心得网站没有备案做竞价吗
  • 龙泉驿区建设局网站wordpress多合一seo包
  • wordpress加载谷歌seo千享科技
  • 工程信息平台广州seo优化代理
  • 谢岗镇做网站开个广告公司大概需要多少钱
  • 企业类网站模板免费下载业务网站建设
  • 室内设计接单网站企业网站建设版本
  • 广东网站建设哪家专业佛山营销网站建设服务公司