Saltar al contenido

Envío de solicitudes http en C# con Unity

Puede que se de el caso de que halles algún fallo en tu código o trabajo, recuerda probar siempre en un ambiente de testing antes añadir el código al proyecto final.

Solución:

los WWW La API debería hacer esto, pero UnityWebRequest lo reemplacé, así que responderé a la API más nueva. Es realmente simple. Debe usar coroutine para hacer esto con la API de Unity; de lo contrario, debe usar una API de solicitud web estándar de C# y Thread. Con coroutine puede ceder la solicitud hasta que esté lista. Esto no bloqueará el subproceso principal ni evitará que se ejecuten otros scripts.

Nota:

Para los ejemplos a continuación, si está usando algo a continuación Unidad 2017.2reemplazar SendWebRequest() con Send() y luego reemplazar isNetworkError con isError. Esto funcionará para la versión inferior de Unity. Además, si necesita acceder a los datos descargados en forma binaria, reemplace uwr.downloadHandler.text con uwr.downloadHandler.data. Finalmente, el SetRequestHeader La función se utiliza para establecer el encabezado de la solicitud.

OBTENER solicitud:

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);
    


Solicitud POST con formulario:

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);
    


Solicitud POST con 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);
     
 

Solicitud POST con Multipart FormData/Multipart Form File:

void Start()

    StartCoroutine(postRequest("http:///www.yoururl.com"));


IEnumerator PostRequest(string url)

    List formData = new List();
    formData.Add(new MultipartFormDataSection("field1=foo&field2=bar"));
    formData.Add(new MultipartFormFileSection("my file data", "myfile.txt"));

    UnityWebRequest uwr = UnityWebRequest.Post(url, formData);
    yield return uwr.SendWebRequest();

    if (uwr.isNetworkError)
    
        Debug.Log("Error While Sending: " + uwr.error);
    
    else
    
        Debug.Log("Received: " + uwr.downloadHandler.text);
    


PUT solicitud:

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);
    


Borrar petición:

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");
    

Sección de Reseñas y Valoraciones

Si entiendes que te ha resultado de provecho este artículo, nos gustaría que lo compartas con el resto juniors de este modo contrubuyes a difundir este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *