WWW网络请求
采用WWW获取网络数据:
(一)get
1)天气数据下载
private string weatherApi = "http://www.sojson.com/open/api/weather/json.shtml?city={0}";
//private string weatherApi = "http://www.sojson.com/open/api/weather/xml.shtml?city={0}"; //xml format
public string city = "闵行区";
private string fullWeatherApi;
public void OnRequest()
{
StartCoroutine(DataRequest(fullWeatherApi));
}
private bool isResponseValid(WWW www)
{
if (www.error != null)
{
print("Conn failed!");
return false;
}
if(string.IsNullOrEmpty(www.text))
{
print("Bad result");
return false;
}
return true;
}
private IEnumerator DataRequest(string url)
{
WWW www = new WWW(url);
yield return www;
if (!isResponseValid(www)) yield break;
print(www.text);
}
2)texture下载
public GameObject quad;
private Texture2D downloadTexture; public void OnRequest()
{
ImageManage(SetSpirite);
} private void ImageManage(Action<Texture2D> action)
{
if(downloadTexture ==null)//缓存检测
{
StartCoroutine(ImageRequest(beautyApi, action));
}
else
{
action(downloadTexture);
}
} private IEnumerator ImageRequest(string url,Action<Texture2D> action)
{
WWW www = new WWW(url);
yield return www;
print("request");
downloadTexture = www.texture;
action(www.texture);
} private void SetSpirite(Texture2D texture)
{
quad.GetComponent<MeshRenderer>().material.mainTexture = texture;
}
(二)post
public string url = "https://api-cn.faceplusplus.com/facepp/v3/detect";
private Hashtable postData = new Hashtable(); public void OnRequest()
{
StartCoroutine(RequestData());
}
IEnumerator RequestData()
{
WWWForm postForm = new WWWForm(); foreach(DictionaryEntry arg in postData)
{
postForm.AddField(arg.Key.ToString(), arg.Value.ToString());
} WWW www = new WWW(url, postForm);
yield return www;
print(www.text);
}
// Use this for initialization
void Start () {
postData.Add("api_key", "**************");
postData.Add("api_secret", "**************");
postData.Add("image_url", "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1508759666809&di=b3748df04c5e54d18fe52ee413f72f37&imgtype=0&src=http%3A%2F%2Fimgsrc.baidu.com%2Fimgad%2Fpic%2Fitem%2F562c11dfa9ec8a1389c45414fd03918fa1ecc06c.jpg");
} // Update is called once per frame
void Update () { }
补充:
post文件可通过WWWForm的AddBinaryData方法即可

第一个参数即为要post的文件的参数名称,第二参数为byte[]类型的文件,第三个为文件名称,第四个为类型。后两个参数可略掉。
form.AddBinaryData("image_file", image, name, "file/jpg");
public IEnumerator WwwPostRequest(byte[] image,string name,int i)
{ WWWForm form = new WWWForm();
form.AddField("api_key", "*************");
form.AddField("api_secret", "***************");
form.AddField("faceset_token", "***************");
form.AddBinaryData("image_file", image, name, "file/jpg"); WWW w = new WWW("**********************", form);
yield return w;
}
补充:
unity 通过www下载时,通过重载的形式来确定get,post方法(不同post方式也在重载中确定);
public WWW(string url, WWWForm form);//对应post的multipart/form-data方式
public WWW(string url, byte[] postData);//对应application/x-www-form-urlencoded(此方式对应postdata为把传入参数按&符号连接后转化为byte[])和application/json方式(postdata为即把传入参数转换成json格式,在转化为byte[])
[Obsolete("This overload is deprecated. Use UnityEngine.WWW.WWW(string, byte[], System.Collections.Generic.Dictionary<string, string>) instead.")]
public WWW(string url, byte[] postData, Hashtable headers);
public WWW(string url, byte[] postData, Dictionary<string, string> headers);//即通过Dictionary指定post的方式如下:
System.Collections.Hashtable headers = new System.Collections.Hashtable();
headers.Add("Content-Type", "application/x-www-form-urlencoded");//哈希表的数据格式
string data = "username=post&password=6789";
byte[] bs = System.Text.UTF8Encoding.UTF8.GetBytes(data);
WWW www = new WWW("http://127.0.0.1/Test.php", bs, headers);
WWW网络请求的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Android之三种网络请求解析数据(最佳案例)
AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...
- IOS开发之—— 在AFN基础上进行的网络请求的封装
网络请求的思路:如果请求成功的话AFN的responseObject就是解析好的. 1发送网络请求:get/post/或者别的 带上URL,需要传的参数 2判断后台网络状态码有没有请求成功: 3 请求 ...
- Android,适合Restful网络请求封装
借助volley.Gson类库. 优点 网络请求集中处理,返回值直接为预期的对象,不需要手动反序列,提高效率,使用时建立好model类即可. 使用效果 DataProess.Request(true, ...
- Android okHttp网络请求之Json解析
前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...
- 阶段一:通过网络请求,获得并解析JSON数据(天气应用)
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用.即使功能很简单,但我还是想把它做成一个相对完 ...
- NSURLSession网络请求
个人感觉在网上很难找到很简单的网络请求.或许是我才疏学浅 , 所有就有了下面这一段 , 虽然都是代码 , 但是全有注释 . //1/获取文件访问路径 NSString *path=@"ht ...
- 【Swift】Alamofile网络请求数据更新TableView的坑
写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的 ...
- 【WP8.1】HttpClient网络请求、进度以及终止
工作这么长时间,起初还是喜欢用面向程序过程的思路去写代码. 慢慢的才会用面向对象的思路分析.解决问题.也算是一点点进步吧. 最近在做一个下载音乐的功能.用到了HttpClient类. 于是就简单的写了 ...
- ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)
当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...
随机推荐
- Python人工智能第一篇:语音合成和语音识别
Python人工智能第一篇:语音合成和语音识别 此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径.目前市面上主流的AI技术提供公司有很多,比如百度, ...
- selenium-03-02操作元素-等待
1.最直接普通的方式:这个是设置固定的等待时间 Thread.sleep(1000); 2.隐式等待方式(implicitlyWait):设置脚本在查找元素时的最大等待时间: driv ...
- Spring MVC-从零开始-@ResponseBody(未完待续)
Spring MVC-从零开始-@ResponseBody(未完待续)
- css3练习
读条的实现1 .div{position: relative;border: 1px solid #111;width: 80px;height: 60px} .div div{width: 20px ...
- postman工具使用小结
序言 现在,postman在做接口测试方面,发挥着越来越重大的作用,其支持多种请求方式.并可以模拟各种类型的数据请求类型,在实际开发中使用它可以极大的提高开发的效率. 安装postman 1. 安装 ...
- java虚拟机体系分析
一.JVM的生命周期: 1)程序开始执行,他就运行,程序停止,它就结束.有几个程序在执行,就有几个虚拟机在工作.只要Java虚拟机中还有普通的线程在执行,Java虚拟机就不会停止. 2)Java虚 ...
- php echo/print 输出函数比较
一.两者区别 echo 支持多个字符串输出,用逗号(,)隔开,print只支持一个字符串输出 echo 输出速度比print快 echo 没有返回值,print返回值总是1 二.使用 echo e ...
- Open Source v.s. Open Core
摘要 本文翻译自 CMSWire 网站的<Open Source vs. Open Core: What's the Difference?>,主要介绍 Open Source 和 Ope ...
- Java8 Stream性能如何及评测工具推荐
作为技术人员,学习新知识是基本功课.有些知识是不得不学,有些知识是学了之后如虎添翼,Java8的Stream就是兼具两者的知识.不学看不懂,学了写起代码来如虎添翼. 在上篇<Java8 Stre ...
- 在Linux环境下采用压缩包方式安装JDK 13
本文地址:https://www.cnblogs.com/oberon-zjt0806/p/11663731.html 可以,转载,出处,格式,懂?? 什么是JDK?? 好吧如果你不知道这个问题的话我 ...