现在有许多的服务器是用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格式。