采用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网络请求的更多相关文章

  1. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  2. Android之三种网络请求解析数据(最佳案例)

    AsyncTask解析数据 AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法. ...

  3. IOS开发之—— 在AFN基础上进行的网络请求的封装

    网络请求的思路:如果请求成功的话AFN的responseObject就是解析好的. 1发送网络请求:get/post/或者别的 带上URL,需要传的参数 2判断后台网络状态码有没有请求成功: 3 请求 ...

  4. Android,适合Restful网络请求封装

    借助volley.Gson类库. 优点 网络请求集中处理,返回值直接为预期的对象,不需要手动反序列,提高效率,使用时建立好model类即可. 使用效果 DataProess.Request(true, ...

  5. Android okHttp网络请求之Json解析

    前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...

  6. 阶段一:通过网络请求,获得并解析JSON数据(天气应用)

    “阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 在上一篇阶段一:解析JSON中提到,最近在写一个很简单的天气预报应用.即使功能很简单,但我还是想把它做成一个相对完 ...

  7. NSURLSession网络请求

    个人感觉在网上很难找到很简单的网络请求.或许是我才疏学浅 ,  所有就有了下面这一段 , 虽然都是代码 , 但是全有注释 . //1/获取文件访问路径 NSString *path=@"ht ...

  8. 【Swift】Alamofile网络请求数据更新TableView的坑

    写这篇BLOG前,有些话不得不提一下,就仅当发发恼骚吧... 今天下午为了一个Alamofire取得数据而更新TableView的问题,查了一下午的百度(360也是见鬼的一样),竟然没有一个简单明了的 ...

  9. 【WP8.1】HttpClient网络请求、进度以及终止

    工作这么长时间,起初还是喜欢用面向程序过程的思路去写代码. 慢慢的才会用面向对象的思路分析.解决问题.也算是一点点进步吧. 最近在做一个下载音乐的功能.用到了HttpClient类. 于是就简单的写了 ...

  10. ios htttp网络请求cookie的读取与写入(NSHTTPCookieStorage)

    当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你 ...

随机推荐

  1. Jupyter Notebook安装和使用详情(你不懂我......)

    一.Jupyter Notebook是什么? 1.notebook jupyter 简介 Jupyter Notebook是一个开源Web应用程序,允许您创建和共享包含实时代码,方程式,可视化效果和叙 ...

  2. .NET Core应用的三种部署方式

    .NET Core应用提供了三种部署方式: FDD FDD:Framework-dependent deployment,框架依赖部署.这种方式针对某个特定版本的.NET Core进行发布,只打包应用 ...

  3. plsql导入导出表结构和数据对象

    一.Tools的导出表结构:export User objects 二.Tools的Export Tables选项 导出表数据:export tables (选择:exp.exe) 三. 导入表结构: ...

  4. 05-padding

    padding padding:内边距,内容到边框的距离 而且,padding是有背景颜色的.background-color属性将填充所有border以内的区域(不包括border) padding ...

  5. java递归求八皇后问题解法

    八皇后问题 八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例.该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处 ...

  6. 设计模式——统一建模语言UML

    目录 一.UML的结构 1.1视图 1.2图 1.3模型元素 二.类图 2.1类与类图 2.2类之间的关系 三.序列图 3.1序列图定义 3.2序列图组成元素与绘制 四.状态图 4.1状态图定义 4. ...

  7. 前端防止url输入地址直接访问页面

    首先,解决这个问题要搞明白此url是从程序内部跳转还是直接在地址栏输入的,如果是程序内部跳转,那就好办啦.方法如下: 判断用户是否登录状态,是否携带token 使用router.beforeEach注 ...

  8. springboot与docker整合

    一.springboot与docker整合 a.创建Dockerfile FROM java MAINTAINER "Wing"<1561815137@qq.com> ...

  9. Python PDB调试处理

    pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了 ...

  10. 微人事 star 数超 10k,如何打造一个 star 数超 10k 的开源项目

    看了下,微人事(https://github.com/lenve/vhr)项目 star 数超 10k 啦,松哥第一个 star 数过万的开源项目就这样诞生了. 两年前差不多就是现在这个时候,松哥所在 ...