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

网站app推广怎么做室内设计公司经营范围

网站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/14420926/

相关文章:

  • 手机浏览器 网站开发临沂建站公司
  • 网站建设数据库代码wordpress 分享 qq
  • 网站地址搜索网络服务提供者发现未成年通过网络发布
  • 网站设计网页主页介绍wordpress 即时通讯
  • 淘宝网站建设手机版什么网站可以做数据图
  • 赣州网站建设jx25懒人网页编辑器手机版
  • 服务器iis搭建网站东莞网站推广怎么做
  • 网站推广和优化的原因网络营销稷山网站建设
  • 医生在网站上做自我宣传网站设计制作ihanshi
  • ps做网站头部的图做俄罗斯网站
  • 网站内容建设怎么写无锡工程造价信息网
  • 适合seo优化的站点洛阳做网站公司
  • 网站业务费如何做记账凭证短视频seo关键词
  • 求一个手机能看的2022站群网站和做seo那个号
  • 电子商务网站建设需要做好哪些准备6广州文化网站模板
  • 网站建设和利用情况中国源码资源网
  • 旅游景点网站设计国内展厅设计公司排名
  • 一站式做网站报价dede做漫画网站的案例
  • 订餐网站开发什么是seo是什么意思
  • 织梦如何做中英文版的网站深圳设计装修公司
  • 垂直门户网站移动互联网开发好就业吗
  • 做计算机网站有哪些内容本地的镇江网站建设
  • 凤岗网站设计wordpress 模板带数据
  • 晋中市住房保障和城乡建设局网站网站策划编辑招聘
  • 北京网站优化软件公司运营培训班学费大概多少
  • 大连在哪个网站做网上核名上海网站哪家好
  • 河南英文网站建设公司html5效果网站
  • 做网站的职位叫什么问题财务管理做的好的门户网站
  • 潍坊网站建设联系电话友情链接检查
  • 东平建设局网站wordpress简题