2010-09-04 28 views
0

Je veux envoyer une requête HTTP PUT sur une URL pour mettre à jour ce contenu de XML via l'API.Comment envoyer une requête HTTP PUT dans Flex

URL est comme ceci: https://domainname.com/someurls/id.xml

Je veux mettre à jour ce contenu.

Mais lorsque j'envoie cette requête PUT, j'ai vu que dans Moniteur réseau de Flex 4, c'est la requête POST sur ce web, alors que je mets la méthode comme PUT dans la variable HTTPService.

Je reçois donc une erreur. Y a-t-il un moyen d'envoyer la requête PUT sur le Web? Ou Y at-il un en-tête spécial pour définir la méthode PUT? Je l'ai essayé en-tête de méthode, mais sa ne fonctionne pas ....

S'il vous plaît aidez-moi .....

Répondre

10

J'ai trouvé la solution pour envoyer le service put et delete avec HTTPSerivce en flex.

Vous devez simplement envoyer un en-tête de plus avec la méthode de service POST.

Vous devez envoyer des données dans la méthode POST et attacher un autre en-tête X-HTTP-Method-Override et la valeur en tant que PUT ou DELETE.

Votre service sera envoyé en tant que PUT ou DELETE.

Merci ......

+1

On devrait être un peu plus prudent en utilisant l'expression "la solution".Cette méthode dépend de la prise en charge par le serveur de cet en-tête personnalisé, qui a été introduit par Google et MS il y a quelques années (http://code.google.com/apis/gdata/docs/2.0/basics.html#UpdatingEntry). Encore, +1, puisque cela est utile dans les cas où il est supporté (par exemple, le vôtre;). – merv

+0

Amazon S3 prend-il en charge X-HTTP-Method-Override? – jayarjo

1

Flex ne prend pas en charge PUT en raison du flash player sous-jacent. Voir this article sur les limitations. Il existe un workaround here. Cependant, si le serveur et le client sont sous votre contrôle, je suggère d'utiliser seulement GET et POST. Flex n'est pas destiné aux vrais clients RESTful. (Par exemple faire un post avec un paramètre put=true)

+0

+1 non pris en charge. Bien que je suis assez sûr que c'est en fait une limitation du navigateur, pas directement la faute de Flash Player. –

+0

Eh bien, je ne sais pas à ce sujet. Le navigateur prend en charge PUT. Et par exemple, je pense qu'une applet Java peut utiliser PUT. – Bozho

+0

Tous les navigateurs ne prennent pas en charge PUT/DELETE, les navigateurs modernes ont certainement un support pour ce genre de choses, mais pas tous les anciens navigateurs. Silverlight a eu la même restriction, au moins les deux premières versions, (je ne suis pas sûr pour le moment, je pense qu'ils ont peut-être travaillé dessus.) Je ne connais pas assez les Java Applets. De toute façon, nous serons tous beaucoup mieux quand nous aurons un soutien approprié pour cela. –

1

Alors que la réponse de Mitul a travaillé pour moi aussi, j'ai pu obtenir PUT et DELETE demandes de travail en procédant comme suit.

var urlLoader:URLLoader = new URLLoader(); 
      var urlString:String = "https://www.google.com/arbitraryUrl.json"; 
      var urlRequest:URLRequest = new URLRequest(urlString); 
      urlRequest.method = URLRequestMethod.POST; 

      var variables:URLVariables = new URLVariables(); 
      variables._method = "DELETE"; 
      urlRequest.data = variables; 

      urlLoader.load(urlRequest); 

Donc même concept vraiment. Une manière différente d'y aller. J'espère que cela aide certaines personnes.