FFH—AI作诗之HttpRequest实战
发布时间:2022-07-29 10:22:13 所属栏目:大数据 来源:互联网
导读:前言 最近在一个网课上看到了一个AI作诗的接口,因为之前的fetch接口已经不再维护了,所以我就借这个机会想试试鸿蒙的http接口。接下来会重新复习一下http请求的一些基本知识,并且跟大家一起实现一个简单的AI写诗的demo实际操练一下鸿蒙的http请求。 Demo展
前言 最近在一个网课上看到了一个AI作诗的接口,因为之前的fetch接口已经不再维护了,所以我就借这个机会想试试鸿蒙的http接口。接下来会重新复习一下http请求的一些基本知识,并且跟大家一起实现一个简单的AI写诗的demo实际操练一下鸿蒙的http请求。 Demo展示 #夏日挑战赛#【FFH】AI作诗之httpRequest实战-开源基础软件社区 http接口常识补充 内容类型(Content-Type) 内容类型(Content-Type)的作用就是告诉客户端返回内容的内容类型,各种Content-Type对应的格式如下: Content-Type 对应格式 text/html HTML格式 text/plain 纯文本格式 text/xml XML格式 image/gif gif图片格式 image/jpeg jpg图片格式 image/png png图片格式 application/xhtml+xml XHTML格式 application/xml XML数据格式 application/atom+xml Atom XML聚合格式 application/json JSON数据格式 application/pdf pdf格式 application/msword Word文档格式 application/octet-stream 二进制流数据(如常见的文件下载) application/x-www-form-urlencoded form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式) multipart/form-data 需要在表单中进行文件上传时,就需要使用该格式 响应状态码(ResponseCode) 每次接口请求,服务器都会返回一个响应状态码,每一个状态码都有不同的意思。 名称 值 说明 OK 200 请求成功。一般用于GET与POST请求。 CREATED 201 已创建。成功请求并创建了新的资源。 ACCEPTED 202 已接受。已经接受请求,但未处理完成。 NOT_AUTHORITATIVE 203 非授权信息。请求成功。 NO_CONTENT 204 无内容。服务器成功处理,但未返回内容。 RESET 205 重置内容。 PARTIAL 206 部分内容。服务器成功处理了部分GET请求。 MULT_CHOICE 300 多种选择。 MOVED_PERM 301 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。 MOVED_TEMP 302 临时移动。 SEE_OTHER 303 查看其它地址。 NOT_MODIFIED 304 未修改。 USE_PROXY 305 使用代理。 BAD_REQUEST 400 客户端请求的语法错误,服务器无法理解。 UNAUTHORIZED 401 请求要求用户的身份认证。 PAYMENT_REQUIRED 402 保留,将来使用。 FORBIDDEN 403 服务器理解请求客户端的请求,但是拒绝执行此请求。 NOT_FOUND 404 服务器无法根据客户端的请求找到资源(网页)。 BAD_METHOD 405 客户端请求中的方法被禁止。 NOT_ACCEPTABLE 406 服务器无法根据客户端请求的内容特性完成请求。 PROXY_AUTH 407 请求要求代理的身份认证。 CLIENT_TIMEOUT 408 请求时间过长,超时。 CONFLICT 409 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突。 GONE 410 客户端请求的资源已经不存在。 LENGTH_REQUIRED 411 服务器无法处理客户端发送的不带Content-Length的请求信息。 PRECON_FAILED 412 客户端请求信息的先决条件错误。 ENTITY_TOO_LARGE 413 由于请求的实体过大,服务器无法处理,因此拒绝请求。 REQ_TOO_LONG 414 请求的URI过长(URI通常为网址),服务器无法处理。 UNSUPPORTED_TYPE 415 服务器无法处理请求的格式。 INTERNAL_ERROR 500 服务器内部错误,无法完成请求。 NOT_IMPLEMENTED 501 服务器不支持请求的功能,无法完成请求。 BAD_GATEWAY 502 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求。 UNAVAILABLE 503 由于超载或系统维护,服务器暂时的无法处理客户端的请求。 GATEWAY_TIMEOUT 504 充当网关或代理的服务器,未及时从远端服务器获取请求。 VERSION 505 服务器请求的HTTP协议的版本。 代码实现 1、申请网络权限 在config.json文件里面注册网络权限,该权限允许程序打开网络套接字,进行网络连接。 复制 "reqPermissions": [ { "name": "ohos.permission.INTERNET" } ] 1. 2. 3. 4. 5. 2、导入http模块 复制 import http from '@ohos.net.http'; 1. 3、创建HttpRequest对象 这里调用createHttp()创建一个HttpRequest对象后,要注意每一个httpRequest对应一个http请求任务,不可复用,也就是说每发起一次网络请求,都要创建一个新的HttpRequest对象,当执行完该次请求之后,就会自动销毁该对象。 复制 let httpRequest = http.createHttp(); 1. 4、编写request接口 复制 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代码: 复制 import http from '@ohos.net.http'; import router from '@system.router'; // 每一个httpRequest对应一个http请求任务,不可复用 let httpRequest = http.createHttp(); export default { data: { poemHead:"123", aiResult:"请在上方输入符合要求的字段" }, 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--- error:' + JSON.stringify(err)); } }) }, check1(e){ console.log("xxx---"+JSON.stringify(e.value)) this.poemHead = e.value.poemHead this.hideHeadPoem(); } css代码: 复制 .container { display: flex; flex-direction: column; justify-content: center; align-items: center; left: 0px; top: 0px; width: 100%; height: 100%; } .title { font-size: 60px; text-align: center; width: 100%; height: 40%; margin: 10px; } .display{ justify-content: center; align-items: center; width: 80%; height: 35%; border-radius: 20px; background-color: #fff5f1f1; opacity: 0.8; box-shadow: 10px 10px 5px #888888; } .subButton{ width: 250px; margin-left: 25%; background-color: #ffa5552f; margin-top: 5%; } .subButton2{ width: 250px; height: 70px; margin-left: 25%; background-color: #ffa5552f; margin-top: 2%; } (编辑:钦州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |