• [技术干货] VOD SDK过程中遇到异常问题的解决办法
    1、连接超时出现此类异常原因一般是服务地址(Endpoint)错误或网络不通导致无法连接服务,此时请检查服务地址、网络状况和代理设置。2、错误处理在使用Java SDK时,当服务端或者SDK端出错时,SDK会返回相应的异常信息。这些异常信息中会包含具体的错误信息,例如错误码(Error Code)和错误消息(Error Message)。  "Error Code"是错误码,可以查看错误码定义,找到对应的错误描述,找出对应的错误类型。 "Error Message"是错误信息,可以快速的帮助定位问题,找出错误原因并解决。 如果您需要对SDK的错误进行处理,可以参考如下示例编写代码:/** 业务流程:* 1、首先需要导入点播sdk包VodSDK.jar* 2、设置点播服务配置项,包括点播服务节点地址、AK、SK和ProjectId等,用于连接点播服务和进行授权等。* 3、构造媒资发布请求参数,没有填必填字段* 4、发送媒资发布请求。* 5、返回处理信息。*/import com.google.gson.Gson;import com.huawei.vod.client.ClientConfig;import com.huawei.vod.client.VodClient;import com.huawei.vod.client.VodConfig;import com.huawei.vod.model.Asset.PublishAssetReq;import com.huawei.vod.model.Asset.PublishAssetRsp;//设置点播服务配置项构造方法VodConfig vodConfig = new VodConfig();//设置用户项目编号ProjectId,查看项目ID参考 "查看项目ID"章节vodConfig.setProjectId("projectId");//设置点播服务节点地址,如点播服务的Endpoint当前为“vod.cn-north-1.myhuaweicloud.com”vodConfig.setEndPoint("endPoint");//设置SK,SK的获取方法请参考"创建访问密钥" 章节vodConfig.setAk("ak");vodConfig.setSk("sk");//点播服务构造方法,在没有配置代理的情况下使用该构造方法VodClient vodClient = new VodClient(vodConfig);//设置媒资发布请求参数PublishAssetReq req = new PublishAssetReq();//媒资id是必填的,但在这里没有填写媒资id//String[] assets = {"asset1", " asset2"};//设置媒资发布的媒资IDreq.setAsset_id(req);//发送媒资发布请求PublishAssetRsp rsp = vodClient.publishAssets(req);//如果返回错误if(BaseResponse.FAIL == rsp.getStatus()){    // 这里可以添加您自己的错误处理逻辑    // 例如,打印具体的错误信息    System.out.println("ErrorCode ="+ rsp.getErrorCode());    System.out.println("ErrorMsg ="+ rsp.getErrorMsg());}//如果返回成功else{    //返回处理结果    System.out.println(new Gson().toJson(rsp));} 
  • [技术干货] 使用nodejs实现head携带验证信息方式实现上传和下载简单技术分享
    为公司有通知文件管理和归档的需求,所以购买了一个华为云OBS服务,使用自开发接口来进行通知文件的上传下载,由于通知文件有短时高并发访问的特点,决定使用nodejs来实现,毕竟node在通讯和IO上有他独特的优势。开发过程中遇到了一些小坑,但是在华为云服务技术人员的支持下,完成了核心的功能上传和下载,这里简单的分享下。华为文档在官网上都可以查询到,需要根据文档来进行开发的,部分文档说明不明确的地方可能会造成开发人员的困惑,我这里会对这些进行简单的说明。华为云OBS有标准的nodejs-SDK,可以进行下载使用,只是该SDK不是很适用于我们的项目,因为我们小文件居多,也有自己的业务组件,所以没有采用SDK的方式进行实现,而使用了更轻量级的head携带信息进行请求的方式来进行实现。查阅head方式调用api的文档。核心内容就是head的Authorization的签名生成,这里直接举例子进行签名的生成,下面将分别从实例上介绍上传和下载的功能实现。至于秘钥文件的获取和部分前台操作相信大部分运维人员会搞定,这里就不做详细说明了。 场景:桶下有一个文件需要下载,桶命:buk1,文件名:test.txt,下载到本地项目目录./buk1/test/ 路径下第一步,构造请求的URL,这里注意。需要把文件的key拼接在云服务桶的endpoint后。比如,从前台获取到的桶的endpoint是http://桶名.obs.cn-south-1.myhwclouds.com,你要下载文件的key是/test.txt,这个时候你的完整的请求url就是http://桶名.obs.cn-south-1.myhwclouds.com/test.txt;第二步,构造Authorization参数,这里的组成请参考官网文档,值得注意的是,不要随意颠倒拼接的顺序,要严格按照官网的顺序进行拼接,拼接的时候注意以下几点:1.标准时间,这里注意的是,使用的是格林威治的标准时间,不需要进行时区的转换,node重获取这个时间和时间字符串的方法如下var gmdate = new Date();var utcdate = gmdate.toUTCString();2.请求方法,下载的请求方法为GET,node中直接定义var httpMethod = ‘GET’ 即可;3.SK:SK全名SecretAccessKeyID,作为加密的秘钥,这个可以从前台获取4.AK:AK全名AccessKeyid,作为一个标识,放入Authorization头,后面会说明5.CanonicalizedHeaders 和 CanonicalizedResource,按照文档进行配置,下载这里有时候需要加入一个Content-Type字符串避免签名验证失败,例如txt类型的文件的Content-Type就是text/plain准备好以上的变量后就是开始计算Signature了,根据华为OBS文档,这里直接展示拼接的字符串在node中的代码var beforestr = ‘GET’+ "\n" + "\n" + "text/plain\n" + 时间(utcdate变量) + "\n" + "/桶名/test.txt";这个字符串注意几点,除了最后,每个字符串拼接需要拼接一个‘\n’,直接使用字符串即可,不用考虑转义。关于text/plain就是txt文件的Content-Type,有时候必须加入这个参数后才不会出现403签名错误,最后的字符串参照文档即可,即/桶名/key名,具体各种文件的Content-Type可以查阅附件(从官方标准SDK中剥出来的)ContentType.rar接下来就是对这个字符串进行加密,。加密的过程很标准,这里直接给出代码,如下       var signaturestr =crypto.createHmac("sha1",秘钥(SecretAccessKeyID)).update(utf8.encode(beforestr)).digest().toString("base64");       到此获取完最复杂的签名后就是构造请求头部,这里比较简单,直接贴出代码做简单说明        var headarr = {                "Date": utcdate,  //这里的时候就是注意使用上方的签名中的时间字符串,避免在new一个新的,会造成时间不一致导致签名失败                "Host": "桶名.obs.cn-south-1.myhwclouds.com",//照抄,注意这里不要在尾部添加文件key                "Authorization": "OBS AK(AccessKeyid):" + signaturestr,   //注意空格和:                "Content-Type": " text/plain " //这里尤其要注意和上方加密的字符串保持一致,意思就是字符串中有,这里必须有,否则将导致签名错误        }; 至此,需要准备的变量都完成了,准备进行API请求,我使用的是node的request模块,这里比较简单,直接贴出代码。注意保存路径必须存在,否则会出错,相关验证请自行根据应用场景添加var options = {        url: http://桶名.obs.cn-south-1.myhwclouds.com/test.txt        headers: headarr    };httprequest(options).pipe(fs.createWriteStream(‘./buk1/test/test.txt’)).on("close", function (err) {        if (err) {            console.log(err);            //错误操作        }      //成功操作      });关于上传:      有了下载的经验,实现上传就简单的多了。直接贴出代码(代码片段,比如模块引入等,不全请注意自行补全).      场景:把代码目录下的test.txt上传到:桶名/test.txt 的key中      但是有个注意点需要特别注意,就是自定义CanonicalizedHeaders 和 CanonicalizedResource的时候,必须要按照文档的顺序,从上至下添加,不能违反文档的顺序,截图如下,并且要注意各个API允许的CanonicalizedHeaders 和 CanonicalizedResource是不一样的,要遵循文档结合应用场景进行设计。  var crypto = require('crypto');var utf8 = require('utf8');var fs = require('fs');var httprequest = require(‘request’)fs.readFile('./test.txt', function (err, data) {        if (err) {            console.log(err);        }        console.log('----------data---------------')        console.log(data);        console.log('-----------------------------');         var datalength = data.length;          var url = 'http://桶名. obs.cn-south-1.myhwclouds.com/test.txt';         console.log('url---->' + url);        var gmdate = new Date();        var utcdate = gmdate.toUTCString();        var httpMethod = "PUT";  //注意,上传使用的是PUT方式        var beforestr = httpMethod + "\n" + "\n" + "text/plain\n" + utcdate + "\n" + 'x-obs-acl:public-read\nx-obs-storage-class:STANDARD\n' + "/桶名/test.txt"; //注意x-obs-*的顺序        console.log('------------para-------------');        console.log(beforestr);        console.log('-----------------------------');        var SecretAccessKeyID = "你的SK";         var signaturestr = crypto.createHmac("sha1", SecretAccessKeyID).update(utf8.encode(beforestr)).digest().toString("base64");        console.log('sing------------->' + signaturestr);        var headarr = {            "Date": utcdate,            "User-Agent": "curl/7.15.5",            "Host": "obs-e06d.obs.cn-south-1.myhwclouds.com",            "x-obs-acl": "public-read",    //注意x-obs-*的顺序和上方字符串一致            "x-obs-storage-class": "STANDARD", //注意x-obs-*的顺序和上方字符串一致            "Authorization": "OBS 你的AK:" + signaturestr,  //注意空格和:            "Content-Type": "text/plain",         //和上方字符串保持一致            "Content-Length": datalength       //长度不可省略        };        console.log('------------head-------------');        console.log(head);        console.log('-----------------------------');             var options = {            url:url,            headers: headarr,            body: data        };        httprequest.put(options, function (error, response, body) {            if (!error && response.statusCode == 200) {                //可以使用response获取返回的header,里面有部分OBS返回参数            } else {                //错误处理        });    })     至此,node通过head签名方式实现文件上传和下载就实现了。这里为了展示过程,没有进行任何代码封装,比较直观,方便看到具体过程。如有遇到问题或者更好的建议,欢迎各位大神指出,共同进步!谢谢!
  • 语音识别SDK
    语音识别有python的SDK吗
  • [问题求助] SDK客户端接口调用抛出statusCode 400, reasonPhrase Bad Request, response content-type null is not supported
    transport-vert.x-eventloop-thread-30] [org.apache.servicecomb.loadbalance.LoadbalanceHandler$4.lambda$null$0(LoadbalanceHandler.java:278)] service CONSUMER rest CSBProdOfferingService.OfferingQueryProduct.queryBatchProduct, call error, msg is InvocationException: code=490;msg=CommonExceptionData [message=method POST, path /product/product-offering/v2/products/detail/, statusCode 400, reasonPhrase Bad Request, response content-type null is not supported], server is rest://177.66.15.110:8443?sslEnabled=true&urlPrefix=/ 原因:这个错误是因为provider返回400错误码。provider在接口定义的时候,API没声明400错误码,客户端无法解析,打印了异常。 可以通过查询provider日志进一步查询详细原因。
  • [问题求助] SDK开发启动报错Can not find any instances from service center due to previous errors. service=default/CseMonito...
    Can not find any instances from service center due to previous errors. service=default/CseMonitoring/latest 这个错误是由于服务启动的时候,尝试连接监控服务上报服务运行数据(metrics),由于线下开发没有部署这个服务,所以会打印这个日志。 监控服务的地址是自动发现的,如果连接失败,会重试。 因此刚启动的时候,可能频繁打印日志,这个重试如果几次不成功,会降低频率,后面2分钟才会打印一次。
  • 对象存储有php的sdk么
    有php的么
  • [技术干货] 用户使用OBS Java SDK报错"UnknowHostException"的解决方法
    [color=rgb(255,255,255)]编辑词条 【问题现象】 使用OBS Java SDK在Linux机器上使用“obs.myhwclouds.com”域名调用上传对象接口,报错"UnknowHostException"。 【分析过程】1.在运行环境上可正常ping通obs.myhwclouds.com,并且使用dig命令也能正常解析obs.myhwclouds.com,排除网络原因。 2.分析OBS Java SDK,所用的HttpClient框架底层是通过JDK标准库进行域名解析的,该标准库不会存在BUG,因此怀疑是运行环境的问题。 3.查询JDK标准库域名解析算法的相关资料,发现JDK标准库会读取运行环境上的/etc/resolv.conf文件,以获取DNS配置从而解析出IP,如果JVM进程对该文件没有读权限,可能导致"UnknowHostException"异常。 4.排查运行环境发现运行JVM进程的用户确实没有读/etc/resolv.conf文件的权限,修改权限后,问题解决。 【经验总结】报错的表象和根因看起来差得比较远,要深入问题本质才能分析出来。
  • 关于U-vMOS SDK集成
    请问有没有知道U-vMOS SDK集成Android的对应下载包的下载链接呢?或者这个SDK本身是收费的还是免费的呢?
  • PHP实现obs上传,是否需要obs的上传sdk
    PHP实现obs上传,是否需要obs的上传sdk
  • 关于统一身份认证,获取认证,是否有python的sdk
    我用api调用aksk进行认证的话有python相关的sdk吗?
  • [问题求助] OBS 的 SDK链接跑哪去了??
    在产品主页、帮助文档中找了一圈,都没有sdk链接,请问藏到哪里去了? ......
  • 华为云对象存储服务(OBS)SDK工具包下载地址
    对象存储服务软件开发工具包(OBS SDK,Object Storage Service Software Development Kit)是对OBS服务提供的REST API进行的封装,以简化用户的开发工作。用户直接调用OBS SDK提供的接口函数即可实现使用OBS服务业务能力的目的。Java、Python、.NET、Android、iOS、C、Node.js、BrowserJS、PHP、Go十种语种的SDK的下载地址为:https://developer.huaweicloud.com/sdk?OBS 
  • 很多产品没有Python SDK
    很多AI、EI产品没有提供Python SDK,很不方便。
  • [问题求助] 决赛阶段-gcc-sdk中的问题
    使用gcc-sdk开发,本地测试通过。决赛阶段一直报 answer exit abnormal Missing output file. 错误。 使用原始版本的gcc-sdk,参考这篇贴子,修改了buff数组内存分配,https://forum.huaweicloud.com/thread-8487-1-1.html 调试后还是存在一些案例跑通,另一些案例报此错误。 可否请专家修复一些sdk中的这个问题?调试的心累。
  • [介绍/入门] CSE java-chassis SDK开放性设计
    详细内容参考: https://bbs.huaweicloud.com/blogs/1fc9427c088611e89fc57ca23e93a89f
总条数:806 到第
上滑加载中