webservice学习之客户端封装类

axis1



import java.rmi.RemoteException;

import javax.xml.rpc.ParameterMode;


import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;


public class Axis1ClientUitl {

	public static Object callService(String url,Class type,String method,Object[] args){
		  Call call = initCall(url, method);
		   //执行方法并带上参数
		  Object result=null;
		try {
			result = call.invoke(args);
		} catch (RemoteException e) {
			e.printStackTrace();
		}
		return result;
	}

	private static Call initCall(String url, String method) {
		Service service = new Service();
		Call call = null;
		try {
			call = (Call) service.createCall();
			call.setTargetEndpointAddress(new java.net.URL(url));
			call.setOperationName(new javax.xml.namespace.QName("urn:sap-com:document:sap:soap:functions:mc-style", method));
			call.setReturnClass(org.w3c.dom.Element.class);
			call.addParameter("op1", XMLType.XSD_STRING, ParameterMode.IN);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return call;
	}
}

 

AXIS2

 

import javax.xml.namespace.QName;

import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class Axis2ClientUtil {

	/**
	 * 初始化调用客户端
	 * @return
	 */
	private static RPCServiceClient initServiceClient(String serviceURL){
		 //  使用RPC方式调用WebService        
        RPCServiceClient serviceClient;
		try {
			serviceClient = new RPCServiceClient();
			Options options = serviceClient.getOptions();
			//  指定调用WebService的URL
			EndpointReference targetEPR = new EndpointReference(serviceURL);
			options.setTo(targetEPR);
			return serviceClient;
		} catch (AxisFault e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 调用service
	 * @return
	 */
	public static Object[] callService(String serviceURL,Class type,String methodName,String args){
		
	    try {
	    	RPCServiceClient service2Client = initServiceClient(serviceURL);
	    	//  指定methodName方法的参数值
	    	Object[] opAddEntryArgs = new Object[] {args};
	    	//  指定methodName方法返回值的数据类型的Class对象
	    	Class[] classes = new Class[] {type};
	    	//  指定要调用的methodName方法及WSDL文件的命名空间
	    	QName opAddEntry = new QName("urn:sap-com:document:sap:soap:functions:mc-style", methodName);
			return service2Client.invokeBlocking(opAddEntry, opAddEntryArgs,classes);
		} catch (AxisFault e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    return null;
	}

}


 

 

 

JAVA.NET  URL方式调用

 

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

public class UrlCallServiceUtil {

        /**
	 * 
	 * @param strURL 要调用的url地址
	 * @param strCharse	设置字符编码方式,为null,设置为utf8
	 * @return
	 * @throws Exception
	 */
	public static String postRequest(String strURL, String strCharset)
			throws Exception {
		if ((strURL == null) || (strURL.length() == 0))
			return null;
		if ((strCharset == null) || (strCharset.length() == 0)) {
			strCharset = "UTF-8";
		}
		String[] arrContent = (String[]) null;
		if (strURL.indexOf("?") > -1) {
			arrContent = string2Array(strURL.substring(strURL.indexOf("?") + 1), '&', false);
			strURL = strURL.substring(0, strURL.indexOf("?"));
		}

		StringBuffer sb = new StringBuffer();
		HttpURLConnection con = null;
		try {
			URL url = new URL(strURL);
			con = (HttpURLConnection) url.openConnection();
			con.setDoOutput(true);
			con.setDoInput(true);
			con.setInstanceFollowRedirects(true);
			con.setRequestMethod("POST");
			con.addRequestProperty("Content-type","application/x-www-form-urlencoded");
			con.setUseCaches(false);
			con.connect();

			if ((arrContent != null) && (arrContent.length > 0)) {
				StringBuffer sbContent = new StringBuffer();
				for (int i = 0; i < arrContent.length; i++) {
					if ((arrContent[i] == null)	|| (arrContent[i].indexOf("=") == -1))
						continue;
					sbContent.append(arrContent[i].substring(0,	arrContent[i].indexOf("="))).append("=");
					sbContent.append(URLEncoder.encode(arrContent[i].substring(arrContent[i].indexOf("=") + 1),strCharset)).append("&");
				}
				DataOutputStream out = new DataOutputStream(con.getOutputStream());
				out.writeBytes(sbContent.toString());
				out.flush();
				out.close();
			}

			BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream(), strCharset));
			String line;
			while ((line = reader.readLine()) != null) {
				sb.append(line);
			}
			con.disconnect();
			return sb.toString();
		} catch (Exception e) {
			System.out.print(e.getMessage());
			sb.append(e.getMessage());
			String str1 = sb.toString();
			return str1;
		} finally {
			if (con != null)
				con = null;
		}
	}

	public static String[] string2Array(String s, char delim, boolean trim) {
		if (s.length() == 0)
			return new String[] {};
		List<String> a = new ArrayList<String>();
		char c;
		int start = 0, end = 0, len = s.length();
		for (; end < len; ++end) {
			c = s.charAt(end);
			if (c == delim) {
				String p = s.substring(start, end);
				a.add(trim ? p.trim() : p);
				start = end + 1;
			}
		}
		String p = s.substring(start, end);
		a.add(trim ? p.trim() : p);
		return (String[]) a.toArray(new String[a.size()]);
	}

}

 

 最后一种,也是最笨的一种-----最原始(因为webservice能够跨语言是因为它在网络上请求,回应的数据结构是固定的或者说是标准)

TIPS:所有的语言封装的webservice,其底层都是传输的相同的xml文件

所以我们也可以自己手动拼接SOAP XML然后用url发送代码如下

 

 

 

SoapTap类

 

import java.util.List;

/**
 * soap标签
 * @author Administrator
 *
 */
public class SoapTag {

	private String tagName;//标签名称
	private String tagValue;//标签值
	private String tagAttr;//标签属性
	private List<SoapTag> children;//子标签
	private SoapTag parent;//父类标签

	public String getTagName() {
		return tagName;
	}

	public void setTagName(String tagName) {
		this.tagName = tagName;
	}

	public String getTagValue() {
		return tagValue;
	}

	public void setTagValue(String tagValue) {
		this.tagValue = tagValue;
	}

	public List<SoapTag> getChildren() {
		return children;
	}

	public void setChildren(List<SoapTag> children) {
		this.children = children;
	}

	public SoapTag getParent() {
		return parent;
	}

	public void setParent(SoapTag parent) {
		this.parent = parent;
	}
	
	public String getTagAttr() {
		return tagAttr;
	}

	public void setTagAttr(String tagAttr) {
		this.tagAttr = tagAttr;
	}

	/**
	 * 转化为soapxml
	 * @return
	 */
	public String toSoapStr(StringBuilder retSoap){
		retSoap.append(createTagL());
		List<SoapTag> kids = getChildren();//拿到子节点
		if(kids != null&&kids.size()>0){
			for(SoapTag tag:kids){
				tag.toSoapStr(retSoap);
			}
		}
		retSoap.append(createTagR());
		return retSoap.toString();
	}
	/**
	 * 生成单个tag标签左边
	 * @param name
	 * @param value
	 * @return
	 */
	private String createTagL(){
		return "<"+getTagName()+">";
	}
    /**
     * 生成单个tag标签右边
     * @param name
     * @param value
     * @return
     */
    private String createTagR(){
    	return  "</"+getTagName()+">";
    }
}

  

工具类(项目中有特殊情况的逻辑,自己改吧改吧)

 

 

import org.apache.log4j.Logger;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;


public class SoapHttpUtil {

    private static Logger log = Logger.getLogger(SoapHttpUtil.class);

    private static Map<String,String> tagMap = new LinkedHashMap<String, String>();
    
    static{
    	tagMap.put("Strcustid", null);
    	tagMap.put("TActivities", "CustId,ActiId,ActiType,ActiCodeNm,TitleNm,StartDt,EndDt,ActiStatus,ActiContent,MangerNms,CusPartis,InformantNm,ReportDt,Attachement");
    	tagMap.put("TContact", "CustId,Name,Sex,DepNm,Post,Email,FixTel,Mobile,IsMainContact");
    	tagMap.put("TIbs", "CustId,IbsId,Name,RelationType,RelationName,DepNm,Email,FixTel,Mobile,IsMainIbs");
    	tagMap.put("TabCondition", "ConField,ConHigh,ConLow,ConOption,ConSign");
    }
    


    /**
     * 调用机构CRM用户新增接口
     * @param serviceURL endpoint
     * @param paramMap
     * @return
     */
    public static String callService(String serviceURL,String custid){
        // 生成XML
        String soapBody = getSoapBody("ZcsGetcustinfoforcrm","urn:sap-com:document:sap:soap:functions:mc-style",custid);
        // 发送soap1.1请求
        Map<String,String> retSoap = doSoapPostRequest(serviceURL, soapBody, "utf-8");
        // 解析结果并返回
        StringBuilder retBuilder = new StringBuilder();
        return parseResponse(retSoap.get("RESULT"));
    }

    /**
     * 根据参数生成soap发送的xml
     * @param paramMap
     * @return
     */
    public static String getSoapBody(String actionurn,String namespace,String custids) {
    	StringBuilder sb = new StringBuilder();
    	sb.append("<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' ");
    	sb.append("   xmlns:urn='"+namespace+"'>\n");
    	sb.append("   <soapenv:Header/>\n");
    	sb.append("   <soapenv:Body>\n");
    	sb.append("      <urn:"+actionurn+">\n");
    	createSopTag(sb,tagMap,custids);//调用内部类
    	sb.append("      </urn:"+actionurn+">\n");
    	sb.append("   </soapenv:Body>\n");
    	sb.append("</soapenv:Envelope>");
    	return sb.toString();
    	
    }
    /**
     * 子类tag
     */
	private static void createSopTag(StringBuilder ret,Map<String,String> _tagMap,String param){
		for(Entry<String, String> entry:_tagMap.entrySet()){
			String key = entry.getKey();
			String value = entry.getValue();
			if(value == null){
				ret.append("<"+key+">" + param+"</"+key+">");
			}else{
				String values[] = value.split(",");//
				List<SoapTag> kid = new ArrayList<SoapTag>();
				List<SoapTag> itemKid = new ArrayList<SoapTag>();
				
				SoapTag parent = new SoapTag();
				parent.setTagName(key);
				parent.setTagValue("");
				
				SoapTag itemTag = new SoapTag();//itemTag
				itemTag.setTagName("item");
				kid.add(itemTag);
				
				for(String kidTag:values){
					SoapTag kidtag = new SoapTag();
					kidtag.setTagName(kidTag);
					kidtag.setTagValue("");
					itemKid.add(kidtag);
				}
				itemTag.setChildren(itemKid);
				parent.setChildren(kid);
				parent.toSoapStr(ret);//转化为tagxml
			}
		}
	}


    /**
     * 解析结果
     * @param respStr
     * @return
     */
    public static String parseResponse(String respStr){
    	StringBuilder active = new StringBuilder();//活动服务
    	StringBuilder ourcust = new StringBuilder();//我方联系人
    	StringBuilder cust = new StringBuilder();//客户方联系人
        Map<String, String> map = new HashMap<String, String>();
        Document  soupdoc = null;
        try {
        	soupdoc = Jsoup.parse(respStr);
        } catch (Exception e) {
            log.error("接口返回结果无法解析", e);
            throw new RuntimeException("接口返回结果无法解析", e);
        }
        Elements activities = soupdoc.select("TActivities");//活动服务记录
        Elements contact = soupdoc.select("TContact");//客户方联系人
        Elements ibs = soupdoc.select("TIbs");//我方跟踪团队
        parseEles(active,activities.get(0).children());
        parseEles(cust,contact.get(0).children());
        parseEles(ourcust,ibs.get(0).children());
        String activsJson = finalJson("active",active);
        String custjson = finalJson("cust",cust);
        String ourcustjson = finalJson("ourcust",ourcust);
        return "{" + activsJson +","+custjson+","+ourcustjson+"}";
    }
    /**
     * @return
     */
    private static String finalJson(String name ,StringBuilder json){
    	String _name = toJsonStyle(name);
    	String items = json.substring(0,json.lastIndexOf(","));
    	return ""+_name+":["+items+"]";
    }
    /**
     * item节点
     * @param retBuilder
     * @param els
     * @return
     */
    private static String parseEles(StringBuilder retBuilder,Elements els){
    	for(int i = 0 ;i < els.size();i++){
    		Element e = els.get(i);
    		parseChildren(retBuilder,e.children());
    	}
    	return null;
    }
    /**
     * 解析子节点
     * @return
     */
    private static String parseChildren(StringBuilder retBuilder,Elements els){
    	StringBuilder tempBuilder = new StringBuilder();
    	tempBuilder.append("{");
    	for(int i = 0 ;i < els.size();i++){
    		Element e = els.get(i);
    		String jitem = toJson(e);
    		tempBuilder.append(jitem+",");
    	}
    	String  temp = tempBuilder.substring(0, tempBuilder.lastIndexOf(","));
    	retBuilder.append(temp + "},");
    	return retBuilder.toString();
    }
    /**
     * 转换为json对象
     * @return
     */
    private static String toJson(Element e){
    	String name = e.tagName().toUpperCase();
    	String value = e.text();
    	return toJsonStyle(name) + ":" + toJsonStyle(value);
    }
    /**
     * 转换为json格式加双引号
     * @return
     */
    public static String toJsonStyle(String value){
    	return "\""+value+"\"";
    }

    /**
     * Post提交
     * @param urlstr
     * @param body
     * @return
     */
    public static Map<String, String> doSoapPostRequest(String urlstr, String body, String charset) {
        Map<String, String> reMap = new HashMap<String, String>();
        int resCode = -1; //返回状态值
        String resMsg = ""; //返回信息
        HttpURLConnection httpConn = null;
        OutputStream out = null;
        BufferedReader bfw = null;
        String line = null;
        StringBuffer sb = new StringBuffer();
        try {
            URL url = new URL(urlstr);
            httpConn = (HttpURLConnection) url.openConnection();
            httpConn.setRequestMethod("POST");
            if (charset == null) {
                httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            }else {
                httpConn.setRequestProperty("Content-Type", "text/xml; charset=" + charset);
                httpConn.setRequestProperty("SOAPAction", urlstr);
            }
            httpConn.setUseCaches(false);
            httpConn.setInstanceFollowRedirects(false);
            httpConn.setConnectTimeout(5000);
            httpConn.setReadTimeout(10000);
            httpConn.setDoInput(true);
            httpConn.setDoOutput(true);

            out = httpConn.getOutputStream();
            out.write(body.getBytes("UTF-8"));
            out.flush();
        } catch (MalformedURLException e) {
            log.error("请求异常", e);
            throw new RuntimeException("请求异常", e);
        } catch (ProtocolException e) {
            log.error("请求异常", e);
            throw new RuntimeException("请求异常", e);
        } catch (IOException e) {
            log.error("请求异常", e);
            throw new RuntimeException("请求异常", e);
        } finally {
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        // 结果处理
        try {
            // 获取返回值
            resCode = httpConn.getResponseCode();
            resMsg = httpConn.getResponseMessage();
            if (resCode == 200) {
                bfw = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "utf-8"));
                while ((line = bfw.readLine()) != null) {
                    String curLine = line.trim();
                    if (!isEmpty(curLine))  sb.append(curLine);
                }
                reMap.put("CODE", "1");
                reMap.put("RESULT", sb.toString());
            } else {
                reMap.put("CODE","-1");
                reMap.put("RESULT","code=" + resCode+",msg=" + resMsg);
            }
        } catch (IOException e) {
            log.error("返回结果读取异常", e);
            throw new RuntimeException("返回结果读取异常", e);
        } finally {
            if (bfw != null) {
                try {
                    bfw.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return reMap;
    }
    /**
     * 判断字符串是否为空
     * @param src
     * @return
     */
    public static boolean isEmpty(String src) {
        return src == null || src.trim().length() <= 0;
    }


    public static void main(String[] args) throws Exception{
        SoapHttpUtil ws = new SoapHttpUtil();
        String serviceURL = "test.do";
        String ret = ws.callService(serviceURL, "1000004106");
        System.out.println(ret);
    }

}

 

 

 

 

 

VC++调用WebService实战:MS SOAP Toolkit 3.0完整示例与封装 SOAP协议基于XML实现跨平台WebService通信,通过HTTP传输结构化数据。在C++遗留项目中,MS SOAP Toolkit 3.0利用COM组件完成报文序列化与反序列化,无需第三方库即可对接接口。该方案在工控机、MFC老系统维护中价值显著,适用于短信发送、数据上报等场景。围绕VC调用WebService的完整链路,拆解连接器创建、SOAP信封构造、参数传递与响应解析,并给出可复用客户端封装类,解决中文乱码、SOAPAction不匹配等常见问题。 阅读详情

相关推荐

SAP WebService开发设定及呼叫

以图例方式说明在sap上如何设定Web Service以及如何呼叫外部的Web Service

利用WSDL命令封装Web Services

大家对Web Services可以说都应用的非常熟练了,最常用的方法如下操作。添加Web引用 填写自己要引用的Web Services的地址和命名空间 点击Add reference按钮就成功添加Web Services Vs.net 2005会在web.config文件的appSettings小节下增加如下键值&lt;add key="keyname" value="http://hos...

ajian11的专栏 222

ArduSub深度调参指南:如何让水下机器人像鱼一样稳定游动

本文深入探讨了ArduSub水下机器人的深度调参策略,旨在解决ROV在水下晃动、响应迟钝等问题。文章系统解析了级联PID控制逻辑,并针对静水与水流环境,提供了具体的深度保持与姿态控制调参方法、实战日志分析技巧以及异常振荡处理方案,帮助用户实现水下机器人稳定、流畅的游动性能。

CAT789的专栏 372

WebService的封装

写代码前的准备: 导架包:将soap架包复制粘贴到libs文件下-------->右键工程名------->open Module settings------>dependencies------->点“+”---->file dependency----->找到libs下架包---->ok 开始写代码: 一:建一个类装参数名,对应项。(后面要用到) public class Cor

u014321386的博客 2016

华硕ROG枪神双系统实战:Ubuntu安装避坑指南

本文是华硕ROG枪神笔记本安装Ubuntu双系统的详细避坑指南。针对其独特的硬件与BIOS设计,文章核心解决了VMD控制器导致硬盘无法识别、驱动兼容性等关键难题,并提供了从BIOS设置、分区方案到安装后驱动配置与性能调优的一站式解决方案,帮助用户实现稳定的双系统体验。

raspberrypi5的博客 545

STM32F4的sct文件理解

原文地址http://blog.sina.com.cn/s/blog_898f36590100ya2l.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...

weixin_34008805的博客 995

java调用WebService(一)

因工作需要和一个Sap相关系统以WebService的方式进行接口联调,之前仅听过这种技术,但并没有实操过,所以将本次开发相关的踩坑进行记录。

matinal 當冬夜漸暖 。公众号:matinal 3742

XMind文件解析黑科技:用Python实现版本自适应读取(兼容2010-2024)

本文深入探讨了如何利用Python实现XMind文件的版本自适应解析,兼容从2010到2024年的各版本。通过分析XMind文件作为ZIP压缩包的本质,文章提供了智能探测文件内部结构(JSON或XML)并构建健壮读取逻辑的完整方案,有效解决了版本兼容性难题,并演示了将解析数据转换为PlantUML等下游应用的实战案例。

weixin_29041767的博客 683

使用Axis框架对WebService调用进行封装

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34273046的博客 236

A Super-Resolution Imaging Method for Forward-Looking Scanning Radar Based on Improved TV论文阅读

具体而言,作者提出了一种改进的总变差(Improved Total Variation, ITV)方法,通过引入。论文旨在解决前视扫描雷达(Forward-Looking Scanning Radar)超分辨率成像中传统。(Batch Processing),以增强图像边缘特征的保留能力,并提升计算效率。论文的核心创新点在于对传统TV正则化的邻域梯度计算进行扩展,提出。ITV剖面(图3d)在噪声下仍保持矩形边缘,仅存。​(公式10):实现稀疏约束。),抑制远端单元贡献。(幅度远低于目标)。

yangqoor的博客 1240

CosyVoice语音合成使用教程

CosyVoice是一款开源的语音合成工具,它基于深度学习模型,能够生成高度逼真的语音内容。该工具支持多种语言的语音生成,包括中文、英文、日文、粤语和韩语。CosyVoice的亮点在于它对生成语音情感和韵律的精细控制,通过富文本或自然语言输入,可以显著提升合成语音的情感表达能力。CosyVoice提供了多种预训练模型,用户可以根据需求选择合适的模型。:基底模型,适用于一般语音合成任务。:经过SFT微调的模型,适用于特定音色和情感的语音合成。:支持Instruct微调的模型,适用于自然语言控制的语音合成。

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 4443

返回值是数组类型或返回的封装类中属性类型是数组类型的注意事项

<br />使用axis2开发webservice,如果返回值类型是数组类型或者返回的封装类中的属性有数组类型,<br />在返回值为空的时候要注意:<br />1、返回值类型是数组类型<br />     需要返回return new array[0]; 这样在客户端接收到的返回值才是null。<br />     如果return null; 在客户端接收到的将是一个包含有null元素的长度为1的数组。<br />2、返回的封装类中的属性是数组类型<br />     如果该属性为空,需要setName

fengyunsky 1700

大数据分析案例-基于决策树算法构建世界杯比赛预测模型

本项目旨在分析往届世界杯比赛数据,找出规律,最后使用决策树算法构建世界杯比赛预测模型,给出两个球队即可预测胜率,可以给爱看球的小伙伴提供一个参考。本次实验我们使用了2018年及其之前的世界杯比赛数据,通过建立决策树模型,模型准确率为82%,接着我们使用该模型预测了2022年世界杯的5场半决赛及决赛,模型准确率也是接近80%的,说明模型效果还是很不错的。心得与体会:通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。

m0_64336780的博客 1万+

webservice客户端

       一个webservice客户端纠结了我一个星期的时间,让我天天做噩梦。网上的资料都只讲到怎么在webservice工程中生成xfire框架的客户 端。后来尝试多次发现无法在web project工程中直接生成xfire的客户端。甚至我将独立的一个webservice工程打成jar包发部到web project项目中以无济于事最后让我神经崩溃……一段不到一百行的代码解救了我,不用引j...

cheyan520的博客 287

RK3588 C++ MeloTTS 推理

本文介绍了基于RK3588平台和RKNN工具链实现的端侧语音合成(TTS)系统。该系统支持中英文混合输入处理,通过自动合并英文单词、转换标点符号等方式预处理文本,并将其转换为音素和声调序列。核心推理流程包含编码器、中间处理和解码器三个阶段:编码器将音素序列转为隐藏状态,中间处理调节音调和语速,解码器生成最终波形。代码示例展示了输入数据设置和模型推理过程,利用RK3588内置NPU实现高效语音合成。该系统展现了在边缘计算设备上实现复杂AI任务的能力。

J。 200

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Ajax调用Webservice接口实现单条数据和表回传

前后端分离!实现Ajax调用Webservice接口,回传单条数据或表数据的实例

qq_50431202的博客 1204

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

spring,cxf,restful发布webservice传递List,Map,List<Map>

上一篇文章中概述了怎么在Javaweb中发布webservice,这篇文章讲解怎么传递复杂的对象 所用的jar包如下 当服务器返回的是List或者是Map时,一定要将其封装在一个类中, 首先创建封装类,封装了List,Map对象,以及自定义的User类 User.java public class User { private String name; private

lijunlinlijunlin的专栏 4871

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C# HttpClient访问webapi 和 WebClient访问webservice 方法,

仅用于自己记录一下。方便以后使用。如有雷同,实属巧合 public class ServiceUtility { private const string VERIFY_REISTPATIENTIMG_API_URI = “/api/Verify/ReistPatientImg”; #region 动态调用 /// <summary> /// 实例化WebServices /// </summary> /// <param name="

QQ75026717的博客 1989

简单地使用nusoap调用webservice

使用php调用webservice,有个非常方便的封装类nusoap,可以在http://sourceforge.net/projects/nusoap/files/下载。 NuSOAP中最常用到的类是soap_server和soapclient, 其中soap_server用于创建 Webservice服务,类soapclient则用于调用Webservice .这两个类的定义都在li

misaka去年夏天的博客 2759

将retrofit2集成到同时具有webservice和http请求的Android项目中的解决方案

retrofit2集成(webService、http)适用环境1、项目中既有webService服务,也有http服务; 2、项目原有服务是webService或者http其中的一种,由于需求变更等原因要更换服务类型,同时要在不影响原来的服务请求的情况下进行网络框架重构; 3、写服务的换人了;<或者服务人员想装逼,彰显他会多种服务语言>retrofit2简单介绍retrofit是由Square

qw694095369的博客 924

领略webService之美

背景:arcgis 后台ae 10.x以下版本底层使用32位dll,故在拥ao java时指定jdk必须指定32位的,但目前不动产籍系统使用的是64位,造成冲突,解决办法之一就是将本人ao代码单独提出以webService形式提供功能支持,由于之前没系统接触过webService,故照葫芦画瓢过程中遇到了很多问题,在此记录下来,已利后事之师。 写法:目前webService写法多样,好处自不言语,

sRhee的博客 486

AXIS2创建WebSerive客户端接口,并实现跨项目访问

一.为什么要将WebService接口单独分离 减少代码的冗余和代码量,便于开发和维护 二.AXIS2的接口访问方法 此处应用document方式调用 ,用document方式应用现对繁琐而灵活。现在用的比较多。因为真正摆脱了我们不想要的耦合 三.上代码:(仅供参考,实体类信息并未贴出,请自行更改) 项目一: package com.casit.modules.controller; i...

qq_42681144的博客 288

通过IDE开发基于web的XFire(WebService)

原文地址:http://blog.youkuaiyun.com/stoneyang2005/article/details/3931841 请下载两个工具包供环境使用。 1、xfire-distribution-1.2.6.zip,主要包含XFire依赖的部分jar包,下载地址为http://repository.codehaus.org/org/codehaus/xfire/xfire-distri

云枫的专栏 985

Jersey客户端配置

前言: Jersey是一款基于REST架构的web service框架, jersey-client jar包 百度云盘地址:http://pan.baidu.com/s/1nudITeD 代码: FormTest.class package cn.firstflag.jersey.test; import java.io.IOException; import ...

weixin_30905981的博客 183

小谈libcurl

之前使用socket来进行客户端和服务器的通信,必须自己构造HTTP头,HTTP体,非常麻烦,而且容易出错。后来使用了libcurl,真心觉得这是一个好东西。 下面是一个简单的封装类。 http_client.h #ifndef __HTTP_CLIENT_H__ #define __HTTP_CLIENT_H__ #include #include /* *@Author Linu

LinuxPhilosopy的专栏 1026
上一篇: jquery 滚动固定插件
下一篇: javascript base64编解码
sfSam
博客等级 码龄16年 13粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值