Unity UnityWebRequest使用http与web服务器通讯

这篇具有很好参考价值的文章主要介绍了Unity UnityWebRequest使用http与web服务器通讯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、搭建客户端与服务器http通讯

1.在Nodejs中文官网Node.js 中文网 (nodejs.com.cn),下载并安装Nodejs

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 2.在项目文件夹下新建WebServer文件夹,打开CMD窗口,在WebServer文件夹路径下安装express

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 3.在WebServer文件夹中新建main.js文件,在main.js中编写服务端脚本

var express = require("express");
var path=require("path")
var app = express();
app.listen(7777);//监听ip+端口 http://127.0.0.1:7777/
app.use("/", express.static(path.join(process.cwd(), "www_root")));//在WebServer文件夹中新建www_root文件夹

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 4.在CMD中运行main.js,打开浏览器,在地址栏中输入http://127.0.0.1:7777/info.txt即可看到info.txt中的信息

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 二、UnityWebRequest
  1. 构建UnityWebRequest协议请求
  2. 发送请求:SendWebRequest异步
  3. 从客户端传数据到服务端UploadHandler或从服务端下载数据到客户端DownloadHandler

使用下面的脚本方法可以获取到百度的网页信息

注:需要引入using UnityEngine.Networking;命名空间

IEnumerator GetBaiduInfo()
    {
        UnityWebRequest req = UnityWebRequest.Get("http://www.baidu.com");
        yield return req.SendWebRequest();
        Debug.Log(req.downloadHandler.text);
}

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

三、发送数据到服务端

 1.修改main.js文件

var express = require("express");
var path=require("path")
var app = express();
app.listen(7777);//监听ip+端口 http://127.0.0.1:7777/
app.use("/", express.static(path.join(process.cwd(), "www_root")));//在WebServer文件夹中新建www_root文件夹

app.get("/", function (req, res) {
    //console.log(req);//打印请求信息
    console.log(req.query);
    res.send("Received information!!");
});
修改脚本方法
IEnumerator GetUploadInfo()
    {
        UnityWebRequest req = UnityWebRequest.Get("http://127.0.0.1:7777/?name=123&pwd=321");
        yield return req.SendWebRequest();
        Debug.Log(req.downloadHandler.text);
}

2.执行main.js,查看客户端和服务端打印的信息

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 四、从服务器上获取文件信息

1.修改脚本方法

IEnumerator ReadResInfo()
    {
        UnityWebRequest req = UnityWebRequest.Get("http://127.0.0.1:7777/info.txt");
        yield return req.SendWebRequest();
        Debug.Log(req.downloadHandler.text);
}

2.执行main.js,查看客户端打印的信息

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 五、从服务端下载资源

1.在服务端根目录中新建Sounds文件夹,在该文件夹中放了一首音乐

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 2.修改脚本方法

IEnumerator DownloadResfiles()
    {
        UnityWebRequest req = UnityWebRequest.Get("http://127.0.0.1:7777/Sounds/안화화 - asmr采耳助眠.mp3");
        yield return req.SendWebRequest();
        byte[] body = req.downloadHandler.data;
        Debug.Log(Application.dataPath);//打印项目的Assets路径,该路径只在PC端有效
        string fileName = Application.dataPath + "/Sounds/안화화 - asmr采耳助眠.mp3";
        File.WriteAllBytes(fileName, body);//需要引入using System.IO;
}

3.执行main.js,可以看到音乐被下载到了项目的Sounds文件夹中

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 六、客户端上传文件到服务端

1.删除服务端中Sounds文件夹中的音乐,从客户端将音乐传到服务端的Sounds文件夹中

修改main.js

var express = require("express");
var path=require("path")
var app = express();
app.listen(7777);//监听ip+端口 http://127.0.0.1:7777/
app.use("/", express.static(path.join(process.cwd(), "www_root")));//在WebServer文件夹中新建www_root文件夹,设置根目录

app.get("/", function (req, res) {
    //console.log(req);//打印请求信息
    console.log(req.query);
    res.send("Received information!!");
});

var fs = require("fs");
app.put("/UploadFile", function (req, res) {
    //打开一个文件
    var fd = fs.openSync("./www_root/Sounds/안화화 - asmr采耳助眠.mp3", "w");
    req.on("data", function (data) {
        fs.write(fd, data, 0, data.length, function () { });
    });
    req.on("end", function () {
        res.send("UploadSucess");
        fs.close(fd, function () { });
    });
});

2.修改脚本方法

IEnumerator UploadResfiles()
    {
        string fileName = Application.dataPath + "/Sounds/안화화 - asmr采耳助眠.mp3";
        byte[] body = File.ReadAllBytes(fileName);
        UnityWebRequest req = UnityWebRequest.Put("http://127.0.0.1:7777/UploadFile", body);
        yield return req.SendWebRequest();
        Debug.Log(req.downloadHandler.text);
}

3.在CMD中执行main.js,运行客户端,可以看到客户端接收到服务端发来的信息,在服务端的Sounds文件中可以看到音乐被上传了

Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

 Unity UnityWebRequest使用http与web服务器通讯,Unity,unity,服务器,c#

参考:

【Unity】网络进阶实战(四): UnityWebRequest全功能实战详解_哔哩哔哩_bilibili文章来源地址https://www.toymoban.com/news/detail-593878.html

到了这里,关于Unity UnityWebRequest使用http与web服务器通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 教你如何使用Nodejs搭建HTTP web服务器并发布上线公网

    转载自内网穿透工具的文章:使用Nodejs搭建HTTP服务,并实现公网远程访问「内网穿透」 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation(原为 Node.js Foundation,已与 JS Foundation 合并)持有和维护,亦为 Linux 基金会的项目。Node.js

    2024年02月05日
    浏览(51)
  • .NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理服务器监控HTTP请求

    关于Titanium.Web.Proxy详细信息可以去这里仔细看看,这里只记录简单用法 NuGet直接获取Titanium.Web.Proxy 配置 与其说是配置,不如就说这一部分就是未来你需要使用的部分,想知道具体每个部分是干什么的就去看原文链接 全放过来太占地方 最后的 Console.Read(); 是一个等待函数,你

    2024年02月09日
    浏览(58)
  • 使用esp32+micropython+microdot搭建web(http+websocket)服务器(超详细)第一部分

    microdot文档速查 什么是Microdot?Microdot是一个可以在micropython中搭建物联网web服务器的框架 micropyton文档api速查 Quick reference for the ESP32 演示视频链接 视频中我们简单的实现了 使用esp32搭建web服务器 实现get请求 上传网页到服务器 手机打开网址访问该网页 服务器处理请求,实现开

    2024年02月08日
    浏览(54)
  • Web服务器实现|基于阻塞队列线程池的Http服务器|线程控制|Http协议

    代码地址:WebServer_GitHub_Addr 摘要 本实验通过C++语言,实现了一个基于阻塞队列线程池的多线程Web服务器。该服务器支持通过http协议发送报文,跨主机抓取服务器上特定资源。与此同时,该Web服务器后台通过C++语言,通过原生系统线程调用 pthread.h ,实现了一个 基于阻塞队列

    2024年02月07日
    浏览(65)
  • HTTP——五、与HTTP协作的Web服务器

    HTTP——一、了解Web及网络基础 HTTP——二、简单的HTTP协议 HTTP——三、HTTP报文内的HTTP信息 HTTP——四、返回结果的HTTP状态码 HTTP——五、与HTTP协作的Web服务器 HTTP——六、HTTP首部 HTTP——七、确保Web安全的HTTPS HTTP——八、确认访问用户身份的认证 HTTP——九、基于HTTP的功能

    2024年02月14日
    浏览(53)
  • WEB服务器配置与HTTP分析

    目录 实验目的: 实验要求: 实验原理: 实验步骤: 步骤1:创建拓扑 步骤2:为PC、Client和Server配置IPv4地址、子网掩码和域名服务器 步骤3:启动设备和服务器 步骤4:测试PC-1、Client-1和Server-1之间的通信 步骤5:在Server-1上配置并启动DNS服务器  步骤6:在Server-1上配置并启动

    2024年01月17日
    浏览(53)
  • 〖Web全栈开发③〗—HTTP协议和静态web服务器

    🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主 🎁🎁:Web全栈开发专栏:《Web全栈开发》免费专栏,欢迎阅读! TCP (Transmission Control Protocol) 是在互联网协议(IP)上的一种基于连接(面向连接)的传输层协议 。数据

    2024年02月05日
    浏览(43)
  • SpringBootWeb入门、HTTP协议、Web服务器-Tomcat

    目录 一、SpringBootWeb入门 二、HTTP协议 HTTP-请求协议 HTTP-响应协议 HTTP-协议解析 三、Web服务器-Tomcat 服务器概述 Tomcat 直接基于SpringFramework进行开发,存在两个问题:配置繁琐、入门难度大 通过springboot就可以快速的帮我们构建应用程序,所以springboot呢,最大的特点有两个 :

    2024年01月15日
    浏览(43)
  • Cisco Packet Tracer实验:访问Web服务器(加深对网络体系结构的理解)_一台主机访问一个Web服务器,HTTP协议

    如果觉得这篇文章写得好,关注一下公众号“小东方不败”吧!码字不易!感谢大佬的关注! 一台普通的主机和一台服务器: 连线: 配置IP地址: 主机: 服务器: 将模式调成simulation,并且只勾选HTTP协议: 然后就可以看到: 点击PC机,选择Web Browser: 勾选下面的top(置顶

    2024年02月04日
    浏览(68)
  • Unity向Web服务器上传和下载图片

    Unity的WWW不但能上传下载文本形式的数据,还可以上传下载图片,不过在传输过程中,图片的信息需要转为文本格式。 在上传的这段代码中,我们使用EncodeToPNG函数将图片转出为byte数组,使用WWWForm的方式上传到Web服务器上,与之前不同的是,这一次上传的PNG格式的图片。当上

    2024年02月03日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包