看完之后,知道大概流程,以后出門你也可以跟別人說,你可以跟別人說你會接服務器了,
有問題可以在評論區問,或者私信我,
首先:帶大家看看后臺的資料,

這個是后端給我的要對接的資料,
第一步,我們先看一下我們需要操作的流程:
(寫class)1,先寫一個類(假設它是飯盒),用來把回傳來的引數轉換成我們可以用的類(假設是米飯),并儲存,這樣我們就能拿到服務器給我們的資料了,才能開吃,(為什么不先為傳過去的引數寫個類,因為這個可以直接封裝然后傳過去,一次性就沒必要 )
(Get方法)2,意淫好了,也準備好了飯盒(類),那下一步,就是要飯(資料),怎么要?那我們就得告訴它,這樣它才可能會給我們飯,那就寫個Get()方法(這個相當于一根棍子,你不戳它,它不知道你叫它),
(獲得回傳結果)3,戳了它之后,它會看我們要飯的姿勢對不對,不對的話,它會直接拒絕,那你就得換各種姿勢,直到它滿意為止,這個姿勢,就是你要傳過去的引數,
(拿到json)4,它滿意之后,居然給了我們一勺米,這就很尷尬了,那我們就得煮熟米(轉換),才能變成飯
第二步,看完上面四步,那我們就開始,把它從幻想變成現實,
1,寫class,超簡單,不用掛在物體上
public class Manager//管理類
{
}
public class Lessons//課件(們)類
{
public string code;//回傳錯誤代號,例如你經常玩游戲遇到的error:10010,這個后臺會跟你說具體的
public string message;//回傳的成功與否詳細資訊
public T data;//上面那個data寫的是null,是因為現在暫時沒東西,如果有東西他就是個array
}
2,飯盒做好了,那要飯吧,要飯的程序有點艱難,看官一定要堅持,這步過了就成功了,
找棍子戳它

public enum NetWork//這個列舉的用處是,要飯時,他看你的姿勢滿意與否回傳的值
{
WARNING,//警告
ERROE,//不滿意
SUCCESS//滿意
}
public class WebRequest : MonoBehaviour//找棍子的地方
{
public static WebRequest _ins;//寫成靜態類,你才拿得到
private void Awake()
{
_ins = this;
DontDestroyOnLoad(this);
}
}
地方有了,那拿棍子前,我們是不是要讓服務器它知道,我們要的是米飯(路徑url),不是iPhone12,對不對,要不然它要是給我們iphon12 一腳那挺疼的,
那在棍子上面塞個小字條(路徑url),再擺個好姿勢(傳參過去),棍子準備好(Get()方法)
public class WebRequest : MonoBehaviour//找棍子的地方
{
public static WebRequest _ins;//寫成靜態類,你才拿得到
readonly string url_saveLessons = "/api/teacher/savePrepareLessons";//小紙條寫好了(路徑)
private void Awake()
{
_ins = this;
DontDestroyOnLoad(this);
}
//前面這兩個int值,是我們需要傳過去的引數,后臺會告訴你具體傳什么,你們可以假想都是1
//Action是回呼,先別管,等會我再講這個
public void GetInfo_Lenssons(int teacherId, int coursewareId, Action<NetWork, string> callBack)//棍子
{
Dictionary<string, object> dic = new Dictionary<string, object>
{
{ "teacherId",teacherId},
{ "coursewareId",coursewareId}
};
StartCoroutine(GetUrl(url_saveLessons, dic, callBack));
}
//這個就是基于unity聯網的請求,我這就不具體寫了
public IEnumerator GetUrl(string url, Dictionary<string, object> getData, Action<NetWork, string> callBack)
{
string data = GetStringFromDict(getData);
Debug.Log("data:" + data);
if (!String.IsNullOrEmpty(data))
url = url + "?" + data;
Debug.Log(" RequestService ------ GetUrl() - " + url);
using (UnityWebRequest www = new UnityWebRequest(url, "GET"))
{
www.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
www.useHttpContinue = false;
yield return www.SendWebRequest();
long mark = 200;
if (www.isNetworkError)//發起請求失敗 -- 彈出例外
{
Debug.Log("www.isNetworkError:" + www.error);
//("請求失敗", "請求失敗!\n在請求時發生了一個錯誤,\n請重試\n錯誤資訊:" + www.error);
callBack(NetWork.ERROE, www.error);
}
else if (!mark.Equals(www.responseCode))//發起請求成功,但未能正確到達服務器
{
Debug.Log("warning:" + www.responseCode.ToString());
//("請求失敗", "請求例外!\n請重試.\n錯誤代碼:" + www.responseCode);
callBack(NetWork.WARNING, www.responseCode.ToString());//warning
}
else if (mark.Equals(www.responseCode))//本次請求成功 - 服務器有回傳資料
{
Debug.Log("success:" + www.downloadHandler.text.ToString());
string json = www.downloadHandler.text;
callBack(NetWork.SUCCESS, json);
}
}
}
}
棍子Get(),紙條(url),擺的姿勢(上面兩個int值),裝米的手(那個回呼,等會講),都有了,戳它!
這時你可以打開你的一個面板panel,沒就就自己創一個,寫個main_Script腳本掛載在面板上,
public class main_Script: MonoBehaviour
{
public Lessons ssr_wan;//碗掏出來
void Start()
{
WebRequest._ins.GetInfo_Lenssons(1,1,callback_Method);//這就是執行的操作,戳
}
//這個就是裝米的手——回呼方法
private void callback_Method(NetWork arg1, string json)
{
if (arg1 != NetWork.SUCCESS)
{
//姿勢不對,換一個
return;
}
else
{
ssr_wan = JsonConvert.DeserializeObject<Lessons >(json);//把米飯煮熟了裝進了碗里
//執行你賦值的操作,完結,開吃
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/229311.html
標籤:其他
上一篇:C語言小游戲——小熊跳板
