unity http json前后端通信
1. 配置请求体中的Json字符串
1 request_data = new RequestBodyClass(); 2 request_data.a = "Json第一个字段"; 3 request_data.b = "Json第二个字段"; 4 string body = JsonUtility.ToJson(request_data);
2. 实例化HTTPRequest
请求头方法设置为POST,并且设置请求头中类型为json,请求类型有误可能会导致后端报错;使用RawData配置请求体内容。
1 // BestHttp插件, 首先实例化一个HTTPRequest, 设置为Post形式, 并配置回调函数RequestHandle 2 request = new HTTPRequest(new Uri("http://localhost:8080/queryTest"), 3 HTTPMethods.Post, RequestHandle); 4 request.RawData = Encoding.UTF8.GetBytes(body); 5 request.SetHeader("Content-Type", "application/json"); 6 request.Send();
3. 配置回调函数RequestHandle
其中response的Data字段为响应体字节流,使用JsonConvert进行解包,注意类中的字段和Json中字段名要完全相同,Json中的数组在类中也对应为数组,二维数组则继续套娃。
1 private void RequestHandle(HTTPRequest originalrequest, HTTPResponse response) 2 { 3 string resStr = Encoding.UTF8.GetString(response.Data); 4 Request_Data res = JsonConvert.DeserializeObject<Request_Data>(resStr); 5 } 6 7 // 下面写了一种Json中数组嵌套数组的类的写法 8 public class Resquest_Data 9 { 10 public int num_People; 11 public People[] people; 12 } 13 14 public class People 15 { 16 public string name; 17 public int num_Children; 18 public Children[] children; 19 } 20 21 public class Children 22 { 23 public string name; 24 }
4. 注意问题:
1.请求头里的类型要配置对,否则后端可能不能返回值
2.如果Http请求选择保持连接,TCP连接也会在9次请求后自动断开,之后会有报错,注意再次建立连接或者每次请求都重新创建链接。