Unity 网络请求

IP

互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给用户上网使用的国际协议(英语:Internet Protocol, IP)的设备的数字标签。常见的IP地址分为IPv4与IPv6两大类,但是也有其他不常用的小分类。

IP地址是IP网络中数据传输的依据,它标识了IP网络中的一个连接,一台主机可以有多个IP地址。IP分组中的IP地址在网络传输中是保持不变的。

(摘自:百度百科)

HTTP

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。

HTTP协议是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

HTTP协议是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。。

HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

HTTP协议工作于客户端-服务端架构上。

浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

https://www.runoob.com/http/http-tutorial.html

域名

 域名(英语:Domain Name),简称域名网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

网域名称系统(DNS,Domain Name System,有时也简称为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP地址数串。

(摘自:百度百科)

API接口

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。 

API是一组访问基于Internet的服务或应用程序的标准和说明。在大多数情况下,API描述了服务的功能,解释了它如何被访问和使用,以及它将接受作为输入的格式。

Unity实现

 在场景中准备UI

  

其中:

为Content添加组件:Vertical Layout Group和Content Size Fitter

为Content添加脚本:Test

为Item添加脚本:TestItem

UI的搭建依据获取数据的实际情况自行调整。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;

public class Test : MonoBehaviour
{
    public GameObject Item;//单元格预制体
    void Start()
    {
        //请求接口API
        string theurl = "http://api.juheapi.com/japi/toh?key=4f773dfcc7143c15465d4c210e75a612&v=1.0&month=11&day=1";
        //开启协程
        StartCoroutine(Request(theurl));
    }

    IEnumerator Request(string url)
    {
        //开始请求
        WWW www = new WWW(url);
        //等待请求
        yield return www;
        //完成请求
        if (www.isDone)
        {
            //获取到的数据
            Debug.Log(www.text);
            //解析json
            Parse(www.text);
        }
    }

    void Parse(string json)
    {
        JsonData jsonData = JsonMapper.ToObject(json);
        foreach (JsonData item in jsonData["result"])
        {
            //创建单元格,获取单元格上脚本TestItem,调用ToSet方法
            Instantiate(Item,transform).GetComponent<TestItem>().ToSet(item);
        }
    }
}
using LitJson;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class TestItem : MonoBehaviour
{
    Image image;//图片
    Text Text_id1;//ID
    Text Text_title1;//标题
    Text Text_GY1;//阳历
    Text Text_lunar1;//阴历
    Text Text_des1;//描述

    void Awake ()
    {
        image = transform.Find("Image").gameObject.GetComponent<Image>();
        Text_id1 = transform.Find("Text_id1").gameObject.GetComponent<Text>();
        Text_title1 = transform.Find("Text_title1").gameObject.GetComponent<Text>();
        Text_GY1 = transform.Find("Text_GY1").gameObject.GetComponent<Text>();
        Text_lunar1 = transform.Find("Text_lunar1").gameObject.GetComponent<Text>();
        Text_des1 = transform.Find("Text_des1").gameObject.GetComponent<Text>();
    }
	
    public void ToSet(JsonData jsonData)
    {
        StartCoroutine(SetImage(jsonData["pic"].ToString()));
        Text_id1.text = jsonData["_id"].ToString();
        Text_title1.text = jsonData["title"].ToString();
        Text_GY1.text = jsonData["year"].ToString() +"."+ jsonData["month"].ToString()+ "." + jsonData["day"].ToString();
        Text_lunar1.text = jsonData["lunar"].ToString();
        Text_des1.text = jsonData["des"].ToString();
    }

    IEnumerator SetImage(string url)
    {
        if (url != null && url != "")
        {
            Debug.Log(1111);
            WWW www = new WWW(url);
            yield return www;
            image.sprite = Sprite.Create(www.texture,new Rect(0,0,www.texture.width,www.texture.height),Vector2.zero);
        }
        else
        {
            Debug.Log(url);
            image.sprite = Resources.Load<Sprite>("Textures/kong");
        }
    }
}

下面是此次请求到的json数据

{
	"result": [{
		"_id": "11201101",
		"title": "北宋江南方腊起义",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/201109/18/7D2278978.jpg",
		"year": 1120,
		"month": 11,
		"day": 1,
		"des": "在899年前的今天,1120年11月1日 (农历十月初九),北宋江南方腊起义。",
		"lunar": "庚子年十月初九"
	}, {
		"_id": "19021101",
		"title": "挪威作家格里格诞生",
		"pic": "",
		"year": 1902,
		"month": 11,
		"day": 1,
		"des": "在117年前的今天,1902年11月1日 (农历十月初二),挪威作家格里格诞生。",
		"lunar": "壬寅年十月初二"
	}, {
		"_id": "19071101",
		"title": "电影导演吴永刚诞生",
		"pic": "",
		"year": 1907,
		"month": 11,
		"day": 1,
		"des": "在112年前的今天,1907年11月1日 (农历九月廿六),电影导演吴永刚诞生。",
		"lunar": "丁未年九月廿六"
	}, {
		"_id": "19111101m1",
		"title": "路易斯·雪佛兰成立汽车公司",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/6C231817233.jpg",
		"year": 1911,
		"month": 11,
		"day": 1,
		"des": "在108年前的今天,1911年11月1日 (农历九月十一),路易斯·雪佛兰成立汽车公司。",
		"lunar": "辛亥年九月十一"
	}, {
		"_id": "19111101m2",
		"title": "上海光复,陈其美任沪军都督",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/03231818265.jpg",
		"year": 1911,
		"month": 11,
		"day": 1,
		"des": "在108年前的今天,1911年11月1日 (农历九月十一),上海光复,陈其美任沪军都督。",
		"lunar": "辛亥年九月十一"
	}, {
		"_id": "19121101",
		"title": "北京召开临时工商会议",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/201211/1/2011655937.jpg",
		"year": 1912,
		"month": 11,
		"day": 1,
		"des": "在107年前的今天,1912年11月1日 (农历九月廿三),北京召开临时工商会议。",
		"lunar": "壬子年九月廿三"
	}, {
		"_id": "19191101",
		"title": "美国历史上第一次工人运动高潮",
		"pic": "",
		"year": 1919,
		"month": 11,
		"day": 1,
		"des": "在100年前的今天,1919年11月1日 (农历九月初九),美国历史上第一次工人运动高潮。",
		"lunar": "己未年九月初九"
	}, {
		"_id": "19261101",
		"title": "北伐军攻陷南昌孙传芳主力被歼",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/AA231648606.jpg",
		"year": 1926,
		"month": 11,
		"day": 1,
		"des": "在93年前的今天,1926年11月1日 (农历九月廿六),北伐军攻陷南昌孙传芳主力被歼。",
		"lunar": "丙寅年九月廿六"
	}, {
		"_id": "19271101",
		"title": "宋庆龄等成立国民党临时行动委员会",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/94231644446.jpg",
		"year": 1927,
		"month": 11,
		"day": 1,
		"des": "在92年前的今天,1927年11月1日 (农历十月初八),宋庆龄等成立国民党临时行动委员会。",
		"lunar": "丁卯年十月初八"
	}, {
		"_id": "19281101",
		"title": "中央银行成立",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/10231638725.jpg",
		"year": 1928,
		"month": 11,
		"day": 1,
		"des": "在91年前的今天,1928年11月1日 (农历九月二十),中央银行成立。",
		"lunar": "戊辰年九月二十"
	}, {
		"_id": "19351101",
		"title": "汪精卫南京遇刺",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/4C231555157.jpg",
		"year": 1935,
		"month": 11,
		"day": 1,
		"des": "在84年前的今天,1935年11月1日 (农历十月初六),汪精卫南京遇刺。",
		"lunar": "乙亥年十月初六"
	}, {
		"_id": "19481101",
		"title": "解放军发布《惩处战争罪犯命令》",
		"pic": "",
		"year": 1948,
		"month": 11,
		"day": 1,
		"des": "在71年前的今天,1948年11月1日 (农历十月初一),解放军发布《惩处战争罪犯命令》。",
		"lunar": "戊子年十月初一"
	}, {
		"_id": "19481101m1",
		"title": "中共中央军委颁发整编命令",
		"pic": "",
		"year": 1948,
		"month": 11,
		"day": 1,
		"des": "在71年前的今天,1948年11月1日 (农历十月初一),中共中央军委颁发整编命令。",
		"lunar": "戊子年十月初一"
	}, {
		"_id": "19491101",
		"title": "“西南战役”开始",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/201405/9/CE14153545.jpg",
		"year": 1949,
		"month": 11,
		"day": 1,
		"des": "在70年前的今天,1949年11月1日 (农历九月十一),“西南战役”开始。",
		"lunar": "己丑年九月十一"
	}, {
		"_id": "19491101m1",
		"title": "中国科学院成立",
		"pic": "",
		"year": 1949,
		"month": 11,
		"day": 1,
		"des": "1949年11月1日 (农历九月十一),中国科学院成立。",
		"lunar": "己丑年九月十一"
	}, {
		"_id": "19521101",
		"title": "美国第一颗氢弹爆炸成功",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/201211/1/C9102447660.jpg",
		"year": 1952,
		"month": 11,
		"day": 1,
		"des": "1952年11月1日 (农历九月十四),美国第一颗氢弹爆炸成功。",
		"lunar": "壬辰年九月十四"
	}, {
		"_id": "19541101",
		"title": "阿尔及利亚民族解放战争爆发",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/56231337459.jpg",
		"year": 1954,
		"month": 11,
		"day": 1,
		"des": "1954年11月1日 (农历十月初六),阿尔及利亚民族解放战争爆发。",
		"lunar": "甲午年十月初六"
	}, {
		"_id": "19551101m1",
		"title": "美国著作家、教育家戴尔·卡内基逝世",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/E9231331428.jpg",
		"year": 1955,
		"month": 11,
		"day": 1,
		"des": "1955年11月1日 (农历九月十七),美国著作家、教育家戴尔·卡内基逝世。",
		"lunar": "乙未年九月十七"
	}, {
		"_id": "19581101m1",
		"title": "卢蒙巴在刚果被捕",
		"pic": "",
		"year": 1958,
		"month": 11,
		"day": 1,
		"des": "1958年11月1日 (农历九月二十),卢蒙巴在刚果被捕。",
		"lunar": "戊戌年九月二十"
	}, {
		"_id": "19631101",
		"title": "我军击落台湾U-2间谍飞机",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/8F231232539.jpg",
		"year": 1963,
		"month": 11,
		"day": 1,
		"des": "1963年11月1日 (农历九月十六),我军击落台湾U-2间谍飞机。",
		"lunar": "癸卯年九月十六"
	}, {
		"_id": "19841101",
		"title": "邓小平提出裁军100万",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200910/24/CA22547546.jpg",
		"year": 1984,
		"month": 11,
		"day": 1,
		"des": "1984年11月1日 (农历十月初九),邓小平提出裁军100万。",
		"lunar": "甲子年十月初九"
	}, {
		"_id": "19841101m1",
		"title": "我国与阿联酋建立外交关系",
		"pic": "",
		"year": 1984,
		"month": 11,
		"day": 1,
		"des": "1984年11月1日 (农历十月初九),我国与阿联酋建立外交关系。",
		"lunar": "甲子年十月初九"
	}, {
		"_id": "19841101m2",
		"title": "拉吉夫·甘地出任印度总理",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200905/17/4923852362.jpg",
		"year": 1984,
		"month": 11,
		"day": 1,
		"des": "1984年11月1日 (农历十月初九),拉吉夫·甘地出任印度总理。",
		"lunar": "甲子年十月初九"
	}, {
		"_id": "19861101",
		"title": "瑞士桑多兹化工厂爆炸",
		"pic": "",
		"year": 1986,
		"month": 11,
		"day": 1,
		"des": "1986年11月1日 (农历九月廿九),瑞士桑多兹化工厂爆炸。",
		"lunar": "丙寅年九月廿九"
	}, {
		"_id": "19911101m1",
		"title": "唐长乐公主墓对外开放",
		"pic": "",
		"year": 1991,
		"month": 11,
		"day": 1,
		"des": "1991年11月1日 (农历九月廿五),唐长乐公主墓对外开放。",
		"lunar": "辛未年九月廿五"
	}, {
		"_id": "19931101",
		"title": "“哥伦比亚”号创太空飞行纪录",
		"pic": "http://juheimg.oss-cn-hangzhou.aliyuncs.com/toh/200910/24/BE224535759.jpg",
		"year": 1993,
		"month": 11,
		"day": 1,
		"des": "1993年11月1日 (农历九月十八),“哥伦比亚”号创太空飞行纪录。",
		"lunar": "癸酉年九月十八"
	}, {
		"_id": "19931101m1",
		"title": "美国科学家提出恐龙灭绝新说",
		"pic": "",
		"year": 1993,
		"month": 11,
		"day": 1,
		"des": "1993年11月1日 (农历九月十八),美国科学家提出恐龙灭绝新说。",
		"lunar": "癸酉年九月十八"
	}],
	"reason": "请求成功!",
	"error_code": 0
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值