unity3d在跟.net进行http通信的时候,最常见的就是表单数据的提交请求了,但服务器端会返回一坨json数据,这就要求我们在unity中进行json数据的处理了,一般unity中处理json个数数据用的最多的就是LitJSON(它是.net平台下处理SON数据库的类库)。下面我就贴出 ,仅供学习参考!
Client:
using UnityEngine;using System.Collections;using LitJson;public class GetPhotoList : MonoBehaviour { // Use this for initialization void Start () { StartCoroutine(GetPhotos()); } // Update is called once per frame IEnumerator GetPhotos(){ WWWForm form = new WWWForm(); form.AddField(id,123); WWW w = new WWW(http://localhost:36944/GetPhotoList.ashx,form); while (!w.isDone){yield return new WaitForEndOfFrame();} if (w.error != null){Debug.LogError(w.error);} Debug.Log(w.text); JsonData jd = JsonMapper.ToObject(w.text); for (int i = 0; i < jd.Count; i++) { Debug.Log(id= + jd[i][id]); Debug.Log(name= + jd[i][name]); } }}
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Runtime.Serialization.Json;using System.ServiceModel;using System.ServiceModel.Web;using System.IO;namespace UpdatePhoto{ ////// GetPhotoList 的摘要说明 /// public class GetPhotoList : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = text/plain; string id = context.Request.Form[id]; string path = context.Request.PhysicalApplicationPath; //context.Response.Write(Hello World); Listphotos = GetPhotos(id,path); DataContractJsonSerializer djson = new DataContractJsonSerializer(photos.GetType()); djson.WriteObject(context.Response.OutputStream, photos); } public List GetPhotos(string id,string path) { //获取目录 string localPath = path+id + ; //读取目录下的文件 if (!Directory.Exists(localPath)) return null; string[] files = Directory.GetFiles(localPath); List photos = new List (); foreach (string file in files) { string filename = file.Substring(file.LastIndexOf('')+1); Photo p = new Photo(); p.name = filename; p.id = id; photos.Add(p); } return photos; } public bool IsReusable { get { return false; } } } public class Photo { public string id; public string name; }}