Unity WebRequest 使用示例

作者: Angeladaddy | 来源:发表于2020-08-14 15:16 被阅读0次

    Note:
    For the examples below, if you are using anything below Unity 2017.2, replace SendWebRequest() with Send() and then replace isNetworkError with isError. This will then work for the lower version of Unity. Also, if you need to access the downloaded data in a binary form instead, replace uwr.downloadHandler.text with uwr.downloadHandler.data. Finally, the SetRequestHeader function is used to set the header of the request.

    GET request:

    void Start()
    {
        StartCoroutine(getRequest("http:///www.yoururl.com"));
    }
    
    IEnumerator GetRequest(string uri)
    {
        UnityWebRequest uwr = UnityWebRequest.Get(uri);
        yield return uwr.SendWebRequest();
    
        if (uwr.isNetworkError)
        {
            Debug.Log("Error While Sending: " + uwr.error);
        }
        else
        {
            Debug.Log("Received: " + uwr.downloadHandler.text);
        }
    }
    

    POST request with Form:

    void Start()
    {
        StartCoroutine(postRequest("http:///www.yoururl.com"));
    }
    
    IEnumerator PostRequest(string url)
    {
        WWWForm form = new WWWForm();
        form.AddField("myField", "myData");
        form.AddField("Game Name", "Mario Kart");
    
        UnityWebRequest uwr = UnityWebRequest.Post(url, form);
        yield return uwr.SendWebRequest();
    
        if (uwr.isNetworkError)
        {
            Debug.Log("Error While Sending: " + uwr.error);
        }
        else
        {
            Debug.Log("Received: " + uwr.downloadHandler.text);
        }
    }
    

    POST request with Json:

     void Start()
     {
         StartCoroutine(postRequest("http:///www.yoururl.com", "your json"));
     }
    
     IEnumerator PostRequest(string url, string json)
     {
         var uwr = new UnityWebRequest(url, "POST");
         byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(json);
         uwr.uploadHandler = (UploadHandler)new UploadHandlerRaw(jsonToSend);
         uwr.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
         uwr.SetRequestHeader("Content-Type", "application/json");
    
         //Send the request then wait here until it returns
         yield return uwr.SendWebRequest();
    
         if (uwr.isNetworkError)
         {
             Debug.Log("Error While Sending: " + uwr.error);
         }
         else
         {
             Debug.Log("Received: " + uwr.downloadHandler.text);
         }
     }
    

    POST request with Multipart FormData/Multipart Form File:

    void Start()
    {
        StartCoroutine(postRequest("http:///www.yoururl.com"));
    }
    
    IEnumerator PostRequest(string url)
    {
        List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
        formData.Add(new MultipartFormDataSection("field1=foo&field2=bar"));
        formData.Add(new MultipartFormFileSection("my file data", "myfile.txt"));
    
        UnityWebRequest uwr = UnityWebRequest.Post("http:///www.yoururl.com", formData);
        yield return uwr.SendWebRequest();
    
        if (uwr.isNetworkError)
        {
            Debug.Log("Error While Sending: " + uwr.error);
        }
        else
        {
            Debug.Log("Received: " + uwr.downloadHandler.text);
        }
    }
    

    POST request with WWWForm File:

    WWWForm form = new WWWForm();
    form.AddBinaryData("file", data, "screenshot.png", "image/png");
    form.AddField("xxx", "xxx");
    form.AddField("yyy", "yyy"); 
    //...
    UnityWebRequest request = UnityWebRequest.Post("http:///www.yoururl.com", form);
    request.timeout = 10;
    request.chunkedTransfer = false;
    request.SetRequestHeader("Authorization", _globalVar.Token);
    
       yield return request.SendWebRequest();
    
        if (request.isNetworkError)
        {
            Debug.Log("Error While Sending: " + request.error);
        }
        else
        {
            Debug.Log("Received: " + request.downloadHandler.text);
        }
    
    

    PUT request:

    void Start()
    {
        StartCoroutine(putRequest("http:///www.yoururl.com"));
    }
    
    IEnumerator PutRequest(string url)
    {
        byte[] dataToPut = System.Text.Encoding.UTF8.GetBytes("Hello, This is a test");
        UnityWebRequest uwr = UnityWebRequest.Put(url, dataToPut);
        yield return uwr.SendWebRequest();
    
        if (uwr.isNetworkError)
        {
            Debug.Log("Error While Sending: " + uwr.error);
        }
        else
        {
            Debug.Log("Received: " + uwr.downloadHandler.text);
        }
    }
    

    DELETE request:

    void Start()
    {
        StartCoroutine(deleteRequest("http:///www.yoururl.com"));
    }
    
    IEnumerator DeleteRequest(string url)
    {
        UnityWebRequest uwr = UnityWebRequest.Delete(url);
        yield return uwr.SendWebRequest();
    
        if (uwr.isNetworkError)
        {
            Debug.Log("Error While Sending: " + uwr.error);
        }
        else
        {
            Debug.Log("Deleted");
        }
    }
    

    相关文章

      网友评论

        本文标题:Unity WebRequest 使用示例

        本文链接:https://www.haomeiwen.com/subject/tdigdktx.html