一、
新建应用,获取id和密码,为后面获取Access Token做准备
二、
调用api需要授权的Access Token,Access Token或在固定时间改变,因此最好在程序启动的时候获取一次。
三、
获取Access Token
IEnumerator RequestTOKEN()
{
WWWForm form = new WWWForm();
form.AddField("grant_type", "client_credentials");
form.AddField("client_id", clientId);
form.AddField("client_secret", clientSecret);
string authHost = "https://aip.baidubce.com/oauth/2.0/token";
UnityWebRequest www = UnityWebRequest.Post(authHost, form);
yield return www.SendWebRequest();
if (www.isHttpError || www.isNetworkError)
Debug.Log(www.error);
else
{
try
{
TokonData data = JsonUtility.FromJson<TokonData>(www.downloadHandler.text);
TOKEN = data.access_token;
Debug.Log(data.access_token);
}
catch (Exception e)
{
Debug.Log(e);
}
}
}
四、
图片需要转为base64格式的,具体图片大小需求看文档。
private string Byte2Base64(byte[] data)
{
return Convert.ToBase64String(data);
}
五、
这一步最重要的是UnityWebRequest.EscapeURL,转义字符串中的字符以确保它们对URL友好。
IEnumerator RequestWeb(string base64)
{
string url = "https://aip.baidubce.com/rest/2.0/image-classify/v2/advanced_general?access_token=" + TOKEN;
WWWForm form = new WWWForm();
form.AddField("access_token", TOKEN);
UnityWebRequest www = UnityWebRequest.Post(url, form);
www.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded");
base64 = UnityWebRequest.EscapeURL(base64);
string image = "image=" + base64;
www.uploadHandler = new UploadHandlerRaw(Encoding.UTF8.GetBytes(image));
yield return www.SendWebRequest();
if (www.isHttpError || www.isNetworkError)
Debug.Log(www.error);
else
{
Debug.Log(www.downloadHandler.text);
}
}