当前位置: 首页 > 科技观察

FFH—AI诗的HttpRequest实战

时间:2023-03-11 21:06:53 科技观察

了解更多开源内容请访问:开源基础软件社区https://ost.51cto.com前言我看到一个网课中AI写诗的接口,因为之前的fetch接口已经不再维护了,所以趁着这个机会试试鸿蒙的http接口。接下来我将重温一下http请求的一些基础知识,和大家一起实现一个AI写诗的简单demo来练习一下鸿蒙的http请求。Demo展示http接口常识补充内容类型(Content-Type)内容类型(Content-Type)的作用是告诉客户端返回内容的内容类型。各种Content-Type对应的格式如下:Content-Type对应格式text/htmlHTML格式text/plain纯文本格式text/xmlXML格式image/gifgif图片格式image/jpegjpg图片格式image/pngpng图片格式application/xhtml+xmlXHTML格式应用/xmlXML数据格式应用/atom+xmlAtomXML聚合格式应用/jsonJSON数据格式应用/pdfpdf格式应用/mswordWord文档格式应用/octet-stream二进制流数据(如普通文件下载)应用/x-www-form-urlencodedform表单数据编码成key/value格式发送给服务器(表单默认提交数据格式)multipart/form-data需要上传表单中的文件时,需要使用该格式响应状态码(ResponseCode)。每次接口请求,服务端都会返回一个响应状态码,每个状态码都有不同的含义。name值表示OK200请求成功。一般用于GET和POST请求。CREATED201创建。已成功请求并创建新资源。已接受202已接受。请求已被接受但尚未处理完成。NOT_AUTHORITATIVE203未经授权的信息。请求成功。NO_CONTENT204没有内容。服务器处理成功,但没有返回任何内容。RESET205重置内容。PARTIAL206部分内容。服务器成功处理了部分GET请求。MULT_CHOICE超过300种选择。MOVED_PERM301永久移动。请求的资源已经永久移动到新的URI,返回的信息会包含新的URI,浏览器会自动定向到新的URI。MOVED_TEMP302临时移动。SEE_OTHER303查看其他地址。NOT_MODIFIED304未修改。USE_PROXY305使用代理。BAD_REQUEST400客户端请求语法错误,服务端无法理解。UNAUTHORIZED401该请求需要对用户进行身份验证。PAYMENT_REQUIRED402保留供将来使用。FORBIDDEN403服务器理解客户端的请求,但拒绝执行。NOT_FOUND404服务器找不到客户端请求的资源(网页)。BAD_METHOD405客户端请求中的方法被禁止。NOT_ACCEPTABLE406服务器无法根据客户端请求的内容特征完成请求。PROXY_AUTH407请求需要代理验证。CLIENT_TIMEOUT408请求时间过长超时。CONFLICT409服务器可能在完成客户端的PUT请求后返回此代码,服务器在处理请求时发生了冲突。GONE410客户端请求的资源不存在。LENGTH_REQUIRED411没有Content-Length,服务器无法处理客户端发送的请求信息。PRECON_FAILED412客户端请求的前提信息错误。ENTITY_TOO_LARGE413请求被拒绝,因为请求的实体太大,服务器无法处理。REQ_TOO_LONG414请求的URI太长(URI一般是URL),服务器无法处理。UNSUPPORTED_TYPE415服务器无法处理请求的格式。INTERNAL_ERROR500内部服务器错误,无法完成请求。NOT_IMPLEMENTED501服务器不支持请求的功能,无法完成请求。BAD_GATEWAY502作为网关或代理的服务器收到来自远程服务器的无效请求。UNAVAILABLE503由于超载或系统维护,服务器暂时无法处理客户端的请求。GATEWAY_TIMEOUT504作为网关或代理的服务器没有及时获取远程服务器的请求。VERSION505服务器请求的HTTP协议版本。代码实现1.申请网络权限在config.json文件中注册网络权限,允许程序打开网络套接字进行网络连接。"reqPermissions":[{"name":"ohos.permission.INTERNET"}]2.导入http模块importhttpfrom'@ohos.net.http';3、创建HttpRequest对象这里调用createHttp()创建一个HttpRequest对象最后需要注意的是,每个httpRequest对应一个http请求任务,不能重复使用。也就是说,每次发起网络请求,都要创建一个新的HttpRequest对象。请求执行后,该对象会自动销毁。让httpRequest=http.createHttp();4.写请求接口httpRequest.request("https://py.myie9.com/cangtoutest/"+this.poemHead,{header:{'Content-Type':'text/plain'},readTimeout:10000,connectTimeout:10000},(err,data)=>{if(!err){console.info("xxx---"+JSON.stringify(data))this.aiResult=data.result;}else{console.info('xxx---error:'+JSON.stringify(err));}})至此,一个简单的http请求就完成了。后面也可以封装请求,只暴露几个需要改的参数,比如method,Content-Type等,后面找时间写一篇关于http请求封装的博客。5、藏诗完整代码js代码:importhttpfrom'@ohos.net.http';importrouterfrom'@system.router';//每个httpRequest对应一个http请求任务,不能重复使用lethttpRequest=http.createHttp();exportdefault{data:{poemHead:"123",aiResult:"Please在上方输入必填字段"},onInit(){},back(){router.back()},hideHeadPoem(){httpRequest=http.createHttp();httpRequest.request("https://py.myie9.com/cangtoutest/"+this.poemHead,{header:{'Content-Type':'text/plain'},readTimeout:10000,connectTimeout:10000},(err,data)=>{if(!err){console.info("xxx---"+JSON.stringify(data))this.aiResult=data.result;}else{console.info('xxx---错误:'+JSON.stringify(err));}})},check1(e){console.log("xxx---"+JSON.stringify(e.value))this.poemHead=e.value.poemHeadthis.hideHeadPoem();}}css代码:.container{display:flex;弹性方向:列;证明内容:居中;对齐项目:居中;左:0px;顶部:0px;宽度:100%;height:100%;}.title{字体大小:60px;文本对齐:居中;宽度:100%;高度:40%;margin:10px;}.display{justify-content:center;对齐项目:居中;宽度:80%;高度:35%;边界半径:20px;背景色:#fff5f1f1;不透明度:0.8;框阴影:10px10px5px#888888;}.subButton{宽度:250px;左边距:25%;背景色:#ffa5552f;margin-top:5%;}.subButton2{宽度:250px;高度:70px;左边距:25%;背景色:#ffa5552f;margin-top:2%;}hml代码:{{aiResult}}

生成杂音返回
完整的demo代码见附件:https://ost.51cto.com/resource/2180了解更多开源请访问:开源基础软件社区https://ost.51cto.com。