java后端尝试使用WebOffice在线编辑

概述

近期需要在项目中实现在线编辑word文档需求,因此尝试使用WebOfffice实现。官网手册十分详细,也可以加入他们的技术群。群内会有人解答技术问题。免费的方案下同时编辑的文件不多于20个,如果编辑需求量大,需要计费。对于用户较少的小网站来说已经足够使用。

官网手册

https://wwo.wps.cn/docs/introduce/

原理 流程图

图

来自<https://wwo.wps.cn/docs/introduce/technical-architecture/flow-chart/>

申请账号

申请服务商流程: https://open.wps.cn/apply-developer

填写回调地址,回调域名需要带有协议头,且已部署于外网可访问

签名算法

1.新建Signature.java

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.*;
import static org.apache.commons.codec.binary.Base64.encodeBase64String;
//import static org.apache.tomcat.util.codec.binary.Base64.encodeBase64String;

/*生成signature签名算法*/
public class Signature {

	public static String getUrlParam(Map < String, String > params) throws UnsupportedEncodingException {
		StringBuilder builder = new StringBuilder();
		for (Map.Entry < String, String > entry : params.entrySet()) {
			if (builder.length() > 0) {
				builder.append('&');
			}
			builder.append(URLEncoder.encode(entry.getKey(), "utf-8")).append('=').append(URLEncoder.encode(entry.getValue(), "utf-8"));
		}
		return builder.toString();
	}

	public static String getSignature(Map < String, String > params, String appSecret) {

		//params appSecret 密钥

		List < String > keys=new ArrayList();
		for (Map.Entry < String, String > entry : params.entrySet()) {
			keys.add(entry.getKey());
		}

		// 将所有参数按 key 的升序排序
		Collections.sort(keys, new Comparator<String>() {
			public int compare(String o1, String o2) {
				return o1.compareTo(o2);
			}
		});

		// 构造签名的源字符串
		StringBuilder contents = new StringBuilder("");
		for (String key : keys) {
			if (key == "_w_signature") {
				continue;
			}
			contents.append(key + "=").append(params.get(key));
			System.out.println("key:" + key + ",value:" + params.get(key));
		}
		contents.append("_w_secretkey=").append(appSecret);

		// 进行 hmac sha1 签名
		byte[] bytes = hmacSha1(appSecret.getBytes(), contents.toString().getBytes());
		// 字符串经过 Base64 编码
		String sign = encodeBase64String(bytes);
		try {
			sign = URLEncoder.encode(sign, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		System.out.println(sign);
		return
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loa_loa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值