百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

万能前端框架uni app初探04:发送http请求

bigegpt 2024-10-07 06:27 3 浏览

前言

本节我们使用uni app的http请求功能,使用flask搭建一个测试用本地服务器,点击按钮获取服务器返回信息,并显示出来。

一、基础知识

1. HTTP基本知识

(1) HTTP概要

HTTP是Hypertext Transfer Protocol的缩写,Hypertext(超文本)是可以根据客户端请求而跳转的结构化信息。HTTP协议的请求及相应方式设计如下图所示:

从图中可以看出,服务器端响应客户端请求后立刻断开连接,连接不会维持很久,即使同一个客户端再次发送请求,服务端也无法辨认出是否是原先的那个客户端发出的请求,会以相同的方式处理新的请求。

(2) HTTP请求

HTTP请求是客户端向服务端发送请求消息,请求消息可以分为请求行、消息头、消息体三个部分;请求行含有请求方式信息(GET/POST等),GET用于请求数据,POST主要用于传输数据;消息头包括一些访问的域名、用户代理、Cookie等信息;消息体就是请求的数据,仅在POST方式请求时候输入。

(3) HTTP响应

HTTP响应是指服务端根据客户端发送的请求中的动作要求做出具体的动作,然后将结果返回给客户端。 HTTP响应消息可以分为状态行、头信息、消息体三个部分;状态行含有请求的状态信息,这是其与请求消息相比最大的区别。

2. uni.request

在uni-app中,使用uni.request()函数既可以发出http请求,接口说明如下

uni.request(OBJECT)

发起网络请求

在各个小程序平台运行时,网络相关的 API 在使用前需要配置域名白名单。

常用参数如下:

method 有效值

必须大写,有效值在不同平台差异说明不同。

官方示例:

uni.request({
    url: 'https://www.example.com/request', //仅为示例,并非真实接口地址。
    data: {
        text: 'uni.request'
    },
    header: {
 'custom-header': 'hello' //自定义请求头信息
    },
    success: (res) => {
 console.log(res.data);
 this.text = 'request success';
    }
}); 

3. 本地服务器

(1) flask简介

Flask 是一个微型的 Python 开发的 Web 框架,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。 Flask使用BSD授权。 Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:ORM、窗体验证工具、文件上传、各种开放式身份验证技术。

(2) 环境搭建

安装python环境

pip install Flask

pip install flask_cors 

(3) 本文测试代码

ffrom flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app, supports_credentials=True)

@app.route('/')
def hello_world():
 return 'Hello, World!'

@app.route('/hello')
def hello():
 return 'Hello!'

@app.route('/request')
def request():
 return "request!"

if __name__ == '__main__':
   app.run(host="192.168.1.8", port=5000) 

文件结构如下:

(3) 运行

进入到根目录,输入python run.py即可运行。

注意:浏览器访问需要解决跨域问题,安装flask_cors后,增加如下函数

CORS(app, supports_credentials=True) 

浏览器输入:?http://192.168.1.8:5000/request?,运行结果如下:

浏览器输入:?http://192.168.1.8:5000/?hello,运行结果如下:

二、示例

将上一讲app03工程复制为app004,然后拖到HBuilder X中。

1.示例代码

修改pages/index/index.vue中代码如下

<template>
 <view class="container">
 <view class="view_show">
 {{text}}
 </view>
 <button class="btn_view" type="primary" @click='btn_clicked'>中英文切换</button>
 </view>
</template>
<script>
    export default {
        data() {
            return {
                flag: 0,
                text: 'hello world',
            }
        },
        methods: {
            btn_clicked() {
                if (0 == this.flag)
                {
                    this.flag = 1
                    // http 
                    uni.request({
                        url: 'http://192.168.1.8:5000/request', 
                        method:"GET",
                        success: (res) => {
                            console.log(res.data);
                            this.text = res.data
                            uni.showToast({
                                title:"lhost success"
                            })
                        },
                        fail: (res) => {
                            console.log("error…….");
                            uni.showToast({
                                title:"lhost fail",
                            })
                            this.text = 'request localhost fail'
                        }
                    });
                }else
                {
                    this.flag = 0
                    // http 
                    uni.request({
                        url: 'http://192.168.1.8:5000/hello', 
                        success: (res) => {
                            console.log("request baidu success", res.data);
                            this.text = res.data;
                            uni.showToast({
                                title:"baidu success",
                            })
                        },
                        fail: (res) => {
                            console.log("request baidu fail")
                            this.text = "request baidu fail"
                        }
                    });
                }
            },
        }
    }
</script>
<style>
    .container {
        padding: 20px;
        font-size: 14px;
        line-height: 24px;
    }
.view_show {
  margin: 15px auto;
  width: 250px;
  height: 40px;
  line-height: 40px;
  text-align: center;
  border-radius: 5px;
}
.btn_view {
  margin: 15px auto;
  width: 250px;
  height: 40px;
  line-height: 40px;
  text-align: center;
  border-radius: 5px;
}
</style> 

上述代码是在上一节代码基础上增加了点击按钮调用uni.request()功能,核心功能代码如下:

uni.request({
    url: 'http://192.168.1.8:5000/request', 
    method:"GET",
    success: (res) => {
 console.log(res.data);
 this.text = res.data
        uni.showToast({
            title:"lhost success"
        })
    },
    fail: (res) => {
 console.log("error…….");
        uni.showToast({
            title:"lhost fail",
        })
 this.text = 'request localhost fail'
    }
}); 

其中url为本地服务器的访问地址,method为请求方式,默认GET,uni.showToast()函数可以弹出提示框。

三、运行

点击运行--->运行到浏览器--->Chome

web端显示如下

Android具体运行过程不在描述,如有疑问,请看第一节,安装后界面如下:


至此我们已经实现,点击按钮,发出http GET请求,访问本地服务器,并将获取的数据实时显示在页面上。

相关推荐

5分钟调色大片的方法(5分钟调色大片的方法有哪些)

哈喽大家好。在大家印象中一定觉得ps非常难学非常难。大家不要着急,小编的教学都是针对ps零基础的同学的,而且非常实用哦。只要大家跟着图文练习一两遍,保证大家立马学会~!好了,废话少说,下面开始我们今天...

闪白特效原来是这么用的(闪白特效怎么使用)

作者|高艳侠订阅|010-86092062闪白特效是影视作品中应用比较多的效果之一,那么具体该在哪些场景使用闪白特效?具体该如何操作?下面就以AdobePremiere(以下简称PR)为例,...

ppt常用小图标去哪里找?3个矢量素材网站推荐!

ppt是一个注重可视化表达的演示载体,除了高清图片,ppt中另一类常用的素材是各种小图标,也叫矢量图标,巧妙运用小图标能提升整体美观度和表现力,那么ppt常用小图标去哪里找呢?为方便各位快速找到合适的...

有什么好用的截图录屏工具?试试这9款

经常有朋友反馈苦于缺乏截屏和录屏的趁手工具,本期我们分享几个相当好用的截屏和录屏工具,希望能帮到大家。ScreenToGifScreenToGif是一款免费且开源的录屏工具。此款工具最大的特点是可以...

配色苦手福音!专业快速色环配色PS插件

今天橘子老师给的大家介绍的是一款快速配色的插件,非常强大配色苦手福音来啦!(获取方式见文末)【插件介绍】配色在后期设计中占有主导地位,好的配色能让作品更加抢眼Coolorus这款专业的配色插件,能够...

如何用PS抠主体?(ps怎么抠主体)

1.主体法抠图-抠花苞和花梗导入一张荷花苞的照片,点击上图中顶部“选择”菜单栏,下拉单击“主体”。可以看到,只有花苞被选中,但是花梗并没有被选中。接下来单击上图中左侧工具栏的“快速选择工具”,上图中顶...

2799元的4K电视,有保障吗?(买4k电视机哪个品牌好)

在上一期《电脑报》的3·15专题报道中,我们揭露了一款不靠谱的42英寸4K智能电视——TCLD42A561U。这款售价2699元的4K智能电视不仅4K画质方面存在严重问题,而且各种功能和应用体验也不理...

苹果电脑的Touch Bar推出一段时间了 这款工具可以帮你开发适用于它的APP

距离苹果推出带有TouchBar的MacBookPro已经有一段时间了,除了那些像Adobe、Google和Microsoft大公司在开发适用于TouchBar的应用之外,其实还有很多独立的开...

如魔法般吸取颜色的桌灯(如魔法般吸取颜色的桌灯叫什么)

色彩为生活带来的感官刺激,逐渐被视为理所当然。一盏桌灯运用它的神奇力量,将隐藏于物件中的颜色逐一释放,成为装点环境的空间魔法师。ColorUp是一款可以改变颜色的吸色台灯,沿用传统灯泡的造型,融入了拾...

一篇文章带你用jquery mobile设计颜色拾取器

【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...

ps拾色器快捷键是什么?(ps2019拾色器快捷键)

ps拾色器快捷键是什么?文章末尾有获取方式,按照以下步骤就能自动获得!学会制作PS特效需要一定程度的耐心和毅力。初学者可以从基本的工具和技术开始学习,逐渐提高他们的技能水平。同时,观看更多优秀的特效作...

免费开源的 Windows 截图录屏工具,支持 OCR 识别和滚动截图等

功能很强大、安装很小巧的免费截图、录屏工具,提供很多使用的工具来帮我么能解决问题,推荐给大家。关于ShareXShareX是一款免费的windows工具,起初是一个小巧的截图工具,经过多年的迭...

入门到精通系列PS教程:第13篇 · 拾色器、颜色问题说明及补充

入门到精通系列PS教程:第13篇·拾色器、颜色问题说明及补充作者|侯潇问题说明我的第12篇教程里,有个小问题没有说清楚。要说是错误,又不算是错误,只是没有说准确。写完那篇教程后,因为已经到了深...

PS冷知识:用吸管工具吸取屏幕上的任意颜色

今天,我们给大家介绍PS中的一个冷知识:用吸管工具可以吸取屏幕上的任意颜色。其实,操作起来是非常简单的。大多数情况下,我们认为,PS的吸管工具只能吸取PS软件作图区域范围内的颜色,最多加上画布四周的...

Windows 11 将提供内置颜色选择器工具

Windows11内置了颜色选择器,可以扫描并识别屏幕上的颜色并生成颜色代码。此外,微软还利用人工智能技术,让屏幕上的文本扫描和选择变得更加便捷。这两项功能均已在SnippingToolv1...