unity JSON格式发送网络请求

// 定义回调函数
delegate void SendRequestCallback(JObject returnData);
/// <summary>
/// 本方法将以Json格式向后端发送请求
/// </summary>
/// <param name="originJson">要发送的Json对象</param>
/// <param name="url"></param>
/// <param name="call">回调函数,不会处理异常,将信息原样返回</param>
/// <param name="type">可以是"POST"、"GET"等</param>
IEnumerator SendRequest(JObject originJson, string url, SendRequestCallback callback, string type)
{
    // 将JObject转成json字符串
    string sendData = JsonConvert.SerializeObject(originJson);
    // 将字符串使用UTF-8编码成字节流
    byte[] postBytes = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(sendData);
    
    // 创建UnityWebRequest对象,用以发送请求。使用type指定请求的类型。
    using (UnityWebRequest webRequest = new UnityWebRequest(url, type))
    {
        // 设置要上传的数据
        webRequest.uploadHandler = (UploadHandler)new UploadHandlerRaw(postBytes);
        // 创建后端返回数据的接收端
        webRequest.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();

        // 添加请求头。token是我们项目特有的
        webRequest.SetRequestHeader("xxx", xxx);
        // 必须要添加Content-Type请求头,明确指定以json形式传输
        webRequest.SetRequestHeader("Content-Type", "application/json");
        // 发送请求,并等待后端返回后继续调用。
        yield return webRequest.SendWebRequest();

        // 当后端炸了,可能返回一个空字符串,对空字符串进行json解析会导致错误
        if (string.IsNullOrEmpty(webRequest.downloadHandler.text))
        {
            callback(null);
        } else
        {
            // 将后端返回的json字符串转换成一个JObject对象,使用callback传递。
            JObject returnData = JObject.Parse(webRequest.downloadHandler.text);
            callback(returnData);
        }

    }
}
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值