UNITY请求JAVA服务器接口

现在有许多的服务器是用java写的,所以就需要我们请求java服务器的接口,java提供的服务器长这样:

192.168.88.101:8001/experiment/school/list/all
那么通过这样的一个url怎么去用它的数据呢?
首先推荐一个软件:POSTMAN
这是一个接口测试工具,
下载地址:https://www.getpostman.com/
打开之后界面如下

在这里插入图片描述

添加描述
SharedScreenshot.jpg
然后通过新建一个项目:

在这里插入图片描述

SharedScreenshot.jpg
然后将后端给你的url复制到postman中,将寻取方式改成“post” 如果后端需要你传入一个值,那么你还需要手动输入一个值:
在这里插入图片描述

SharedScreenshot.jpg
此时,确定接口是可以使用,然后我们就可以来调用了。
通过下面的代码:

public static string Post(string url, string postData)
    {
        HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
        //将发送数据转换为二进制格式
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);
        request.ServicePoint.Expect100Continue = false;
        //是否使用Nagle:不使用,提高效率 
        request.ServicePoint.UseNagleAlgorithm = false;
        //设置最大连接数
        request.ServicePoint.ConnectionLimit = 65500;
        //指定压缩方法
        //request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip,deflate");
        request.KeepAlive = false;
        //request.ContentType = "application/json";
        request.ContentType = "application/json;charset=utf-8";

        request.Method = "POST";
        request.Timeout = 20000;
        request.ContentLength = byteArray.Length;
        //关闭缓存
        request.AllowWriteStreamBuffering = false;
        request.Proxy = null;
        ServicePoint currentServicePoint = request.ServicePoint;
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();

        WebResponse response = request.GetResponse();
        //获取服务器返回的数据流
        dataStream = response.GetResponseStream();
        StreamReader reader = new StreamReader(dataStream);
        string responseFromServer = reader.ReadToEnd();
        reader.Close();
        dataStream.Close();
        request.Abort();
        response.Close();
        reader.Dispose();
        dataStream.Dispose();
        return responseFromServer;
    }

然后再unity中调用此方法:

Post("http://192.168.88.101:8001/experiment/school/list/all", "{}");

调用接口肯定有返回的值,所有要接受它返回的值。
string jsondata= Post(“http://192.168.88.101:8001/experiment/school/list/all”, “{}”);
还有另外一种办法,这种比较unity原生:

IEnumerator SendText(string data)
    {
        byte[] bodyRaw = Encoding.UTF8.GetBytes(data); 
        UnityWebRequest request = new UnityWebRequest("http://192.168.88.101:8001/experiment/my/experiment/record/add", "POST"); 
        request.uploadHandler = new UploadHandlerRaw(bodyRaw);

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

        yield return request.SendWebRequest();

        if (request.isNetworkError)
        {
            Debug.Log("http 请求错误:" + request.error);
        }
        else
        {
            if (request.responseCode == 200)
            {
                string text = request.downloadHandler.text;
                Debug.Log(text);
                ReportInfo obj = new ReportInfo();
                try
                {
                    obj = JsonUtility.FromJson<ReportInfo>(text);
                }
                catch (Exception e)
                {

                } 
            }
        }
    }

obj就是后台发过来的值了,并把它转换成了json格式。

猜你喜欢

转载自blog.csdn.net/weixin_41590778/article/details/129702835
今日推荐