Unity 接入百度物体识别 API

一、

    新建应用,获取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);
        }
    }

   

发布了31 篇原创文章 · 获赞 2 · 访问量 2780

猜你喜欢

转载自blog.csdn.net/BDDNH/article/details/102815863