1

Pour donner un peu d'arrière-plan: Je construis une interface BlackBerry pour parler à un service Web principal conçu pour prendre en charge uniquement les requêtes PUT pour un grand nombre de ressources importantes au lieu de requêtes POST.Comment créer une requête HTTP PUT sur BlackBerry

Ce backend a bien fonctionné pour iOS mais je n'arrive pas à créer une requête PUT sur le BlackBerry. En regardant à travers l'API BlackBerry, je suis en mesure de créer des requêtes GET/POST avec le code suivant:

HttpConnection conn = (HttpConnection) Connector.open(URL); 
conn.setRequestMethod(HttpConnection.GET); 

ou

conn.setRequestMethod(HttpConnection.POST); 

Il semble que la classe HttpConnection devrait soutenir une commande PUT vu dans l'API here. J'ai essayé de régler manuellement conn.setRequestMethod("PUT"); mais je continue à recevoir une erreur 400 du serveur.

Est-ce que quelqu'un sait comment créer correctement une demande PUT pour le BlackBerry? Ma recherche à travers le web n'a pas ramené de solutions utilisables jusqu'à présent. = (Merci!

+0

Ajoutant simplement le 'conn.setRequstMethod ("PUT")' travaillé dans mon application. – BonanzaDriver

Répondre

1

HTTP 400 signifie « La demande ne pouvait être comprise par le serveur en raison d'une syntaxe incorrecte. ».

Pourriez-vous confirmer votre code fonctionne bien si vous utilisez conn.setRequestMethod(HttpConnection.POST);?

ici C'est pourquoi je demande ceci: Selon le modèle de services web RESTful, la différence devrait être que PUT est utilisé pour mettre à jour une ressource sur le serveur alors que le POST est utilisé pour créer une ressource sur le serveur. POST, puis il confirme que votre code est fondamentalement OK

Ano Le point suivant est "quel framework/technologie est utilisé côté serveur?". Cela peut être important, car les navigateurs ne supportent pas les PUT (seulement GET et POST) nativement, donc les applications web simulent généralement les PUT en mettant un champ de formulaire caché (comme "_method = PUT") dans les formulaires web. Ainsi, lorsque l'utilisateur clique sur Soumettre, le navigateur fait un POST qui inclut le paramètre "_method = PUT", de sorte que le serveur peut reconnaître qu'il s'agit d'un PUT. Ceci est utilisé dans Rails et je soupçonne que d'autres font des choses similaires. Si c'est votre cas, essayez simplement d'ajouter vos paramètres POST avec un paramètre requis par votre paramètre d'application web (comme "_method = PUT").

+0

Merci pour la réponse! J'ai testé POST sur une ressource très simple plus tôt, et ça a bien fonctionné. Mais à ma grande surprise, il s'est retrouvé avec un 400 après que tu m'as fait réessayer. Un peu plus de tests et j'ai trouvé mon problème - mon en-tête de type de contenu était incorrect. Après l'avoir réparé, les deux commandes POST & PUT fonctionnent maintenant, alors MERCI! – FrankieA

+0

Je suis content que ça soit si simple. :) –