HttpGet avec le corps de la requête android
J'essaie de faire une requête sur le serveur par HttpGet. Mais dans le corps du message doit être un objet json. Le Code ci-dessous ne fonctionne pas parce que unit_id et sercret_key ne sont pas envoyés sur le serveur dans le corps du message. Comment puis-je le faire?
JSONObject:
{
"unit_id": 12345,
"secret_key": "sdfadfsa6as987654754"
}
Mon code:
private HttpResponse makeRequest(int id, String secretKey) throws Exception {
BasicHttpParams params = new BasicHttpParams();
params.setParameter("id", id);
params.setParameter("secret_key", secretKey);
httpget.setHeader("Accept", "application/json");
httpget.setParams(params);
httpget.setHeader("Content-type", "application/json");
//Handles what is returned from the page
return httpclient.execute(httpget);
}
Edit: en php cette demande est faite comme cette
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://0101.apiary.io/api/reservations/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "{\n \"unit_id\": 12345,\n \"secret_key\": \"sdfadfsa6as987654754\"\n}");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);
Il semble que vous n'avez pas configuré l'url de votre demande.
J'ai essayer ce code contre serveur et responce à 400 que je n'ai pas le corps du message.
par définition, OBTENIR => Pas de corps de la Requête
Il doit être fait d'une certaine manière. Le Code ci-dessus à partir de php fonctionne bien jusqu'à il shloud être fait en java pour android aussi, je l'espère.
J'ai essayer ce code contre serveur et responce à 400 que je n'ai pas le corps du message.
par définition, OBTENIR => Pas de corps de la Requête
Il doit être fait d'une certaine manière. Le Code ci-dessus à partir de php fonctionne bien jusqu'à il shloud être fait en java pour android aussi, je l'espère.
OriginalL'auteur Amsik | 2013-03-04
Vous devez vous connecter pour publier un commentaire.
Fondamentalement, vous ne pouvez pas envoyer des données de ligne dans le corps (JSON ou autre) avec un HTTP/OBTENIR demande. Le protocole ne permet tout simplement pas de le faire. Évidemment, vous devrez utiliser POST à le faire dans Android trop. 🙂
Mise à JOUR
J'ai été incorrect. En effet, le protocole ne permet pas de mettre une entité dans l'objet de requête. Cette classe peut être utilisée à la place d'Apache
HttpGet
.Et de l'utiliser comme suit,
La source pour
HttpGetWithEntity
est trouvé iciJ'ai clairement indiqué qu'il n'est pas possible à OBTENIR. Je ne me souviens pas, j'ai rien dit à propos de METTRE à tous. 🙂
ouais ma faute. mais pour les requêtes GET, il est possible aussi.
OriginalL'auteur Subin Sebastian
Si vous wnat pour ajouter un objet JSON à votre demande, il doit être une requête Post, et c'est de cette façon de procéder:
OriginalL'auteur Emil Adz
Ici est gentil exemple, comment le faire et cela fonctionne.
Apache HttpClient OBTENIR avec le corps
Mais cette approche est contre api RESTFUL je pense.
OriginalL'auteur Amsik