当前位置: 首页 > 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.dnsts.com.cn/news/46354.html

相关文章:

  • 容桂网站建设哪家公司好海南网警网上报警平台
  • 网站认证空间做填写信息的超链接用什么网站
  • 纪检监察网站建设的意义电子商务网站建设方案书
  • 怎么做网站建设溧水区城乡建设局网站
  • 网站建设维护兼职东莞网站设计智能 乐云践新
  • 企业做网站的公司有哪些会展设计方案
  • 网站制作最流行软件金华网站建设方案咨询
  • 好文本网站内容管理系统动力网站
  • 印刷企业网站模板北辰做网站
  • 电商网站计划阿里指数查询官网入口
  • 做网站样本电销好做吗wordpress 英文 企业网站模板
  • 网站描述样本做版式的网站
  • 金华公司建站模板网站建设与客户价格谈判技巧
  • 网站权重为零导航网站分析
  • 同一家公司可以做几个网站吗东营建设信息网网站
  • 网站建设费财务列账sem是什么意思啊
  • 昆明网站建设搜王道下拉泗水县城乡建设局网站
  • 企业网站建设管理视频专业网站建设详细方案
  • 淘客那些网站怎么做的网站建设的最新技术
  • 快速做效果图的网站叫什么区别自学动漫设计与制作
  • 网站排名优化如何做网站经营性质
  • 保健品网站建设策划书自己做付费网站
  • 西安网站运营招聘wordpress导航菜单
  • 宁波网站推广软件wordpress文件默认权限设置
  • 虚拟体验网站企业专属空间登录
  • 做断桥铝最知名的网站专门做辅助的扎金花网站
  • html5网站开发原理无锡网站推广排名
  • 企业型网站建设哪家比较好wordpress放谷歌代码
  • 免费空间网站推荐电商设计英语
  • 网站要学什么深圳做微商网站公司