当前位置:   article > 正文

最新版onenet平台之HTTP文件管理图片上传_新版onenet http

新版onenet http

一、准备工作

创建产品,添加操作设备,方式:HTTP,文件类型:图片和文本

平台文件管理文档:https://open.iot.10086.cn/doc/v5/fuse/detail/991

https://open.iot.10086.cn/doc/v5/fuse/detail/1402

二、平台提供两种文件上传的方式

一、平台上操作

在设备管理下找到操作设备,上传的文件

二、PostmanAPI上传

先进行API鉴权,经过平台认证才能通过Postman发出Post请求

postman官网:Download Postman | Get Started for Free

官方文档:https://open.iot.10086.cn/doc/v5/fuse/detail/1402

请求方式:post

请求头:

Content-Typemultipart/form-data
AuthorizationAPI鉴权

最新版onenet平台提供两种鉴权方式:设备接入安全鉴权API调用鉴权

1、设备接入安全鉴权Token(设备接入用到的)

https://blog.csdn.net/ab23456_/article/details/135711971?spm=1001.2014.3001.5501

看的这篇文章

2、API鉴权Authorization(图片上传需要用到)

文档:https://open.iot.10086.cn/doc/v5/fuse/detail/1464

在线编辑器:https://www.jyshare.com/compile/9/

新版没有相关的代码生成,旧版的开发文档有多种语言代码(其中Python代码的et过期了要修改才能用)

https://open.iot.10086.cn/doc/v5/develop/detail/635

生成Authorization的Java代码:

version:2022-05-01(区别于设备接入)

res:userid/用户id(用户级于平台对接)

access_key:用户的密钥(在用户中心里要手机验证码)

  1. import javax.crypto.Mac;
  2. import javax.crypto.spec.SecretKeySpec;
  3. import java.io.UnsupportedEncodingException;
  4. import java.net.URLEncoder;
  5. import java.security.InvalidKeyException;
  6. import java.security.NoSuchAlgorithmException;
  7. import java.util.Base64;
  8. public class Token {
  9. public static String assembleToken(String version, String resourceName, String expirationTime, String signatureMethod, String accessKey)
  10. throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
  11. StringBuilder sb = new StringBuilder();
  12. String res = URLEncoder.encode(resourceName, "UTF-8");
  13. String sig = URLEncoder.encode(generatorSignature(version, resourceName, expirationTime, accessKey, signatureMethod), "UTF-8");
  14. sb.append("version=")
  15. .append(version)
  16. .append("&res=")
  17. .append(res)
  18. .append("&et=")
  19. .append(expirationTime)
  20. .append("&method=")
  21. .append(signatureMethod)
  22. .append("&sign=")
  23. .append(sig);
  24. return sb.toString();
  25. }
  26. public static String generatorSignature(String version, String resourceName, String expirationTime, String accessKey, String signatureMethod)
  27. throws NoSuchAlgorithmException, InvalidKeyException {
  28. String encryptText = expirationTime + "\n" + signatureMethod + "\n" + resourceName + "\n" + version;
  29. String signature;
  30. byte[] bytes = HmacEncrypt(encryptText, accessKey, signatureMethod);
  31. signature = Base64.getEncoder().encodeToString(bytes);
  32. return signature;
  33. }
  34. public static byte[] HmacEncrypt(String data, String key, String signatureMethod)
  35. throws NoSuchAlgorithmException, InvalidKeyException {
  36. //根据给定的字节数组构造一个密钥,第二参数指定一个密钥算法的名称
  37. SecretKeySpec signinKey = null;
  38. signinKey = new SecretKeySpec(Base64.getDecoder().decode(key),
  39. "Hmac" + signatureMethod.toUpperCase());
  40. //生成一个指定 Mac 算法 的 Mac 对象
  41. Mac mac = null;
  42. mac = Mac.getInstance("Hmac" + signatureMethod.toUpperCase());
  43. //用给定密钥初始化 Mac 对象
  44. mac.init(signinKey);
  45. //完成 Mac 操作
  46. return mac.doFinal(data.getBytes());
  47. }
  48. public enum SignatureMethod {
  49. SHA1, MD5, SHA256;
  50. }
  51. public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
  52. String version = "2022-05-01";
  53. String resourceName = "userid/369088";
  54. String expirationTime = System.currentTimeMillis() / 1000 + 100 * 24 * 60 * 60 + "";
  55. String signatureMethod = SignatureMethod.SHA1.name().toLowerCase();
  56. String accessKey = "Li44KN9s9TrCirdGA+mkNv+mj4x1tld0oxjD2d3es6NrkjKj3PTQz18AREreEEMUAfYEEvQFsw4nWObiZItYfw==";
  57. String token = assembleToken(version, resourceName, expirationTime, signatureMethod, accessKey);
  58. System.out.println("Authorization:" + token);
  59. }
  60. }

得到Authorization类似如下

version=2022-05-01&res=userid%2F用户id&et=1714747782&method=sha1&sign=pcK%2BV3%2Fql%2BNncCw4w3txNC5nLGA%3D

请求体:

选择form-data格式

product_id产品id
device_name设备名称/设备id
file符合上传格式的图片或文本

file上传到平台,可能会先云上传到postman上

三、上传成功

fid每次上传都不一样,后面对文件进行操作是通过fid操作的

三、效果呈现

对文件操作的注意:

都要先在请求头里面添加Authorization鉴权

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/457022
推荐阅读
相关标签
  

闽ICP备14008679号