Unity的WWW类的用法整理1. Unity的WWW类主要支持GET 和POST两种方式。GET方式请求的内容会附在url的后面一起做为URL向服务器发送请求(请求的内容使用&符号隔开);而POST方式中向服务器发送请求的数据是以一个数据包的形式和url分开传送的,相比GET方式,POST的优点:1.比GET安全;2.传输数据没有长度限制; 综上所述:在项目中使用POST 方式多一些。 以下为具体的用法,因为GET用法简单,主要说POST的用法:(1).一种GET方式:这也是GET方式: IEnumerator IGetData() { WWW www = new WWW(" yield return www;//等待Web服务器的反应 if (www.error != null) { m_info = www.error; yield return null; } m_info = www.text; }(2)下面说说POST方式:说到POST方式,就要说一下WWWForm网页表单,辅助类,用来生成表单数据,用来存储WWW类中要访问服务器的数据;这里有几个参数:WWWForm.headers 表单头 var headers :Hashtable (只读)为使用WWW类传递的表单返回一个正确的请求头。这个域只包含一个头,/"Content-Type"/为表单设置正确的mine类型。"application/x-www-form-urlencoded"用于一般的表单,"multipart/form-data"用于使用AddBinaryData添加表单包含数据。 同理,WWWForm的数据式也是使用的哈希表来存储的数据,即键名对应一个,注意这些键名是string类型的,并且是在服务器端能够被识别的(能够读取其保存的这样一个名字,又或者说本地的表单中存放的数据式是和服务器端开发人员商量好的,定了数据的传输协议的即数据式(变量的顺序等等))IEnumerator IPostData()(上传数据,然后获得从服务器端读到的数据) { System.Collections.Hashtable headers = new System.Collections.Hashtable(); headers.Add("Content-Type", "application/x-www-form-urlencoded");//哈希表的数据式 string data = "username=post&password="; byte[] bs = System.Text.UTF8Encoding.UTF8.GetBytes(data); WWW www = new WWW(" bs, headers); yield return www; if (www.error != null) { m_info = www.error; yield return null; } m_info = www.text; }有一个例子:((上传图片,然后获得从服务器端读到的图片数据)IEnumerator IRequestPNG() { byte[] bs = m_uploadImage.EncodeToPNG();////将图片转化为Byte[]数组 WWWForm form = new WWWForm(); form.AddBinaryData("picture", bs, "screenshot", "image/png"); WWW www = new WWW(" form); yield return www; if (www.error != null) { m_info = www.error; yield return null; } m_downloadTexture = www.texture; }例如这种用法就是涉及到表单以及表单数据:public byte[] rawData = form.data;public string url = "www.myurl.com";public WWW www = new WWW(url, rawData, headers);public IEnumerator Awake() {headers["Authorization"] = "Basic " System.Convert.ToBaseString(System.Text.Encoding.ASCII.GetBytes("username:password"));yield return www;}}这里有一个延伸: 从服务器端获得数据常常需要使用Json解析,获得在游戏之中可以正常使用的数据,下面整理Json解析的知识:(1).需要把Json解析用到的Json文件放到Unity项目的Plugins文件夹下面,这时准备工作(2).以一个例子说明Json解析实现的过程,例子如下:publicvoidResolveJson(){ //定义的JSON字符串,注意JSON的式stringstr=@" { ""Name"" : ""yusong"", ""Age"" : , ""Birthday"" : ""--"",""Thumbnail"":[{ ""Url"": "" ""Height"": , ""Width"": """"},{ ""Url"": "" ""Height"": , ""Width"": """"} ] }";//这里是解析,包括整形与字符串JsonDatajd=JsonMapper.ToObject(str);//若是从服务器端读到的数据,则str应该换为www.Text(前提是Text的数据式是Json类型的)Debug.Log("name = "(string)jd["Name"]);Debug.Log("Age = "(int)jd["Age"]);Debug.Log("Birthday = "(string)jd["Birthday"]);JsonDatajdItems=jd["Thumbnail"]; for(inti=0;i<jdItems.Count;i){Debug.Log("URL = "jdItems[i]["Url"]);Debug.Log("Height = "(int)jdItems[i]["Height"]); Debug.Log("Width = "jdItems[i]["Width"]);}}
推荐整理分享Unity的WWW类的用法整理,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
[置顶] Unity Editor Extensions – Menu Items 转载请注明出处:
3D语音天气球(源码分享)——完结篇 转载请注明本文出自大苞米的博客(
Unity开发之接入Sharesdk微信分享Android 原博客说的很详细了,补充几点原博客链接-----