unity前后端通信 json解析 HTTP POST(BestHttp插件实现)

发布时间 2023-07-04 12:03:19作者: stuxuan

1.配置请求体中的Json字符串

request_data = new RequestBodyClass();
request_data.a = "Json第一个字段";
request_data.b = "Json第二个字段";
string body = JsonUtility.ToJson(request_data);

2.实例化HTTPRequest,请求头方法设置为POST,并且设置请求头中类型为json,请求类型有误可能会导致后端报错;使用RawData配置请求体内容。

// BestHttp插件, 首先实例化一个HTTPRequest, 设置为Post形式, 并配置回调函数RequestHandle
request = new HTTPRequest(new Uri("http://localhost:8080/queryTest"),
                                   HTTPMethods.Post, RequestHandle);
request.RawData = Encoding.UTF8.GetBytes(body);
request.SetHeader("Content-Type", "application/json");
request.Send();

3. 配置回调函数RequestHandle,其中response的Data字段为响应体字节流,使用JsonConvert进行解包,注意类中的字段和Json中字段名要完全相同,Json中的数组在类中也对应为数组,二维数组则继续套娃。

private void RequestHandle(HTTPRequest originalrequest, HTTPResponse response)
{
    string resStr = Encoding.UTF8.GetString(response.Data);
    Request_Data res = JsonConvert.DeserializeObject<Request_Data>(resStr);
}
 
// 下面写了一种Json中数组嵌套数组的类的写法
public class Resquest_Data
{
    public int num_People;
    public People[] people;
}
 
public class People
{
    public string name;
    public int num_Children;
    public Children[] children;
}
 
public class Children
{
    public string name;
}

注意问题:

1.请求头里的类型要配置对,否则后端可能不能返回值

2.如果Http请求选择保持连接,TCP连接也会在9次请求后自动断开,之后会有报错,注意再次建立连接或者每次请求都重新创建链接。