UnityWebRequest http post json通讯

unity3d 提供了一个用于http通讯的类叫:UnityWebRequest,它是www的替代者,因此建议使用这个类。咱们这个例子以json格式与服务器通讯。这里使用的json组件是:Newtonsoftweb

首先,服务器使用springboot 的http restful服务,接收请求的代码以下:spring

 @RequestMapping("logic")
    public DeferredResult<Object> logic(@RequestBody LogicMessage param, @RequestHeader HttpHeaders httpHeaders, HttpServletRequest request, HttpServletResponse response) {
    
}

这果直接使用@RequestBody,让spring负责json和对象的转换。json

 

下面是客户端的代码:springboot

 

    

publicvoidRequest(object message,RequestCallback callback)服务器

 
 

    {restful

 
 

        StartCoroutine(SendRequest(message, callback));app

 
 

    }spa

 
 

    privateIEnumerator SendRequest(object message,RequestCallback callback)3d

 
 

    {rest

 
 

        stringdata = JsonConvert.SerializeObject(message);

 
 

        Debug.Log("向服务器发送请求:"+ data);

 
 

        byte[] bodyRaw = Encoding.UTF8.GetBytes(data);

 
 

UnityWebRequest request = new UnityWebRequest(uri, "POST");

 
 

        request.uploadHandler = new UploadHandlerRaw(bodyRaw);

 
 

        request.SetRequestHeader("Content-Type", "application/json;charset=utf-8");

 
 

        request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();

 
 

        yieldreturn webClient.SendWebRequest();

 
 

        if (webClient.isNetworkError)

 
 

        {

 
 

            Debug.Log("http 请求错误:"+ webClient.error);

 
 

        } else        {

 
 

            stringresult = webClient.downloadHandler.text;

 
 

            HttpResponseResult responseObj = JsonConvert.DeserializeObject(result);

 
 

            callback(responseObj);

 
 

        }

 
 

    }

 

 

欢迎加群交流,QQ群:66728073,197321069,398808948.

相关文章
相关标签/搜索