L'unité GET/POST-Wrapper
C'est un Unity3d en C# question. L'objectif est de créer un objet tel que je peux passer une URL et de recevoir des données via GET
, un objet que je voudrais créer le serait un wrapper pour le WWW logique. Je voudrais également un 'POST' objet de trop, où je pourrais fournir une url et un "Dictionnaire" de paires clé-valeur, comme le post arguments. Sooo... en fin de compte, nous aimerions quelque chose comme ceci:
get_data = GET.request("http://www.someurl.com/somefile.php?somevariable=somevalue");
ET
post_data = POST.request("http://www.someurl.com/somefile.php", post)
//Where post is a Dictionary of key-value pairs of my post arguments.
D'essayer d'accomplir cela, j'utilise le WWW
objet. Maintenant, afin de donner à la WWW
objet de temps à télécharger, nous avons besoin de ce qui se passe à l'intérieur d'un MonoBehaviour
objet et yield
les résultats. Je me suis donc ce qui fonctionne:
public class main : MonoBehavior
{
IEnumerator Start()
{
WWW www = new WWW("http://www.someurl.com/blah.php?action=awesome_stuff");
yield return www;
Debug.Log(www.text);
}
}
Ce que je veux vraiment, c'est ceci:
public class main : MonoBehavior
{
IEnumerator Start()
{
GET request = new GET("http://www.someurl.com/blah.php?action=awesome_stuff");
Debug.Log(request.get_data()); //Where get_data() returns the data (which will be text) from the request.
}
}
Maintenant, j'ai le script principal, attaché à la seule GameObject
dans la hiérarchie (appelé root). Ai-je besoin d'avoir le GET
script associé à la racine GameObject
ainsi? Puis-je le faire dynamiquement à partir de main
?
En fin de compte, j'ai besoin d'une solution qui me permet d'envoyer facilement des GET
et POST
demandes.
Cheers!
Vous devez vous connecter pour publier un commentaire.
Ah, je l'Ai!
Mon problème était un manque de compréhension de la façon dont MonoBehaviour et Coroutines travaillé. La solution est très simple.
Dans l'éditeur, faire un vide GameObject. J'ai nommé DB. Fixez ensuite le script suivant pour elle:
Puis, dans votre script principal de la fonction de démarrage, vous pouvez le faire!
N'ai pas testé les requêtes POST, mais maintenant, la logique est terminé! Envoyer des requêtes HTTP à votre désir, cheers!
Ce que c'est que d'OBTENIR script que vous faites allusion? Le WWW classe permet de récupérer OBTENIR les données correctement les informations dont vous avez besoin est dans la propriété text de la instancié WWW objet. Voici la documentation:
http://unity3d.com/support/documentation/ScriptReference/WWW-text.html
http://unity3d.com/support/documentation/ScriptReference/WWW.html
Tout ce que vous devez faire est de céder le WWW objet, comme vous le faites maintenant, et ensuite de lire les propriétés qui vous intéressent, clair et simple, sans supplément de classes nécessaires.
Comme pour l'envoi d'un POST de l'objet, c'est ce que l'WWWForm classe:
http://unity3d.com/support/documentation/ScriptReference/WWWForm.html
En bref, il vous suffit de créer un WWWForm objet, ajouter des champs à travers AddField(), et puis il suffit de construire un nouveau WWW objet avec l'URL de message & le premier objet, c'est tout. Rendement le WWW objet et une fois qu'il revient, vous êtes des données a été soumis. Les réponses sont, à nouveau, dans la propriété text & les erreurs dans le champ correspondant. Plaine, clean & simple.
HTH!
Ici est @pandemoniumsyndicate du code modifié pour ajouter un rappel. Le code d'origine n'est pas tout à fait correcte, puisque la
GET
etPOST
fonctions de sortie immédiatement après l'appel de la coroutine. A cette époque, il est probable que leWWW
demande n'est pas encore terminée pour accéder à un champ, à l'exception (www.isDone
) est inutile.Le code suivant définit un délégué,
WWWRequestFinished
, qui sera appelée lorsque la demande est terminé avec le résultat de la requête et les données reçues, le cas échéant.