UNITY通过post传输json数据

@UNITY通过post传输json数据

代码

using LitJson;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class HTTPclient : MonoBehaviour
{
#region 属性

public bool IsBusy=false;//用于检测是否重复发送

#endregion

#region HttpClient传输json数据
public void Client()
{
    if(!IsBusy)
    {
        Wait.gameObject.SetActive(true);  
      IsBusy = true;
      JsonData data = new JsonData();//写入json格式的数据
      data["course"] = "123";
      data["username"] = “123”;
      data["password"] = “13”;
   

      byte[] postBytes = System.Text.Encoding.Default.GetBytes(data.ToJson());//把json格式的字符串转化成数组

      StartCoroutine(_POST("http://192.168.1.142:8080/jeecg-boot/LoginControllerinterface/login", postBytes));//发起请求
  
    //使用litJson创建json格式的参数数据
    }
    
   
}

IEnumerator _POST(string url, byte[] postBytes)
{
    UnityWebRequest request = new UnityWebRequest(url, "POST");//method传输方式,默认为Get;

    request.uploadHandler = new UploadHandlerRaw(postBytes);//实例化上传缓存器
    request.downloadHandler = new DownloadHandlerBuffer();//实例化下载存贮器
    request.SetRequestHeader("Content-Type", "application/json");//更改内容类型,
    yield return request.SendWebRequest();//发送请求

    Debug.Log("Status Code: " + request.responseCode);//获得返回值
    IsBusy = false;
    if (request.responseCode == 200)//检验是否成功
    {
        string text = request.downloadHandler.text;//打印获得值
        Debug.Log(text);
       
    }
    else
    {
        Debug.Log(request.responseCode);
       
       
    }
}
#endregion

}
我这里引入了LitJson这个.dll;

request.SetRequestHeader(“Content-Type”, “application/json”);//更改内容类型,一般为application/x-www-form-urlencoded,我就在这踩得坑,传输类型不匹配,服务器无法正确接收数据,这是修改Content-Type的方式在发送请求前修改requestHeader;

刚开始我是用WWW定义表单去传输数据的,用表单传输数据,Content-Type会默认是application/x-www-form-urlencoded,在我改Content-Type,看到了用UnityWebRequest,与服务器传输数据,该API比WWW简略很多

UnityWebRequest关系图

UnityWebRequest 由三个元素组成。

◾UploadHandler 处理数据 将数据发送到服务器 的对象

◾DownloadHandler 从服务器接收数据 的对象

◾UnityWebRequest 负责 HTTP 通信流量控制来管理上面两个对象的对象。
在这里插入图片描述

UnityWebRequest基本使用方法

传输方式为Get
using UnityEngine;
using System.Collections;
using UnityEngine.Experimental.Networking;
//
// using UnityEngine.Networking;
class MyBehaviour : public MonoBehaviour {
void Start() {
StartCoroutine(GetText());

IEnumerator GetText() {
UnityWebRequest request = UnityWebRequest.Get(“http://example.com”);
//
// UnityWebRequest request = new UnityWebRequest(“http://example.com”);
//
// request.method = UnityWebRequest.kHttpVerbGET;
//
yield return request.Send();
//
if (request.isError) {
Debug.Log(request.error);
} else {
if (request.responseCode == 200) {
//
string text = request.downloadHandler.text;
//
byte [] results = request.downloadHandler.data;




参考文章
https://gameinstitute.qq.com/community/detail/118192
传输方式为Get

相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页