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.