Java HttpURLConnection: Longueur du Contenu de calcul
Je suis actuellement à l'élaboration d'une bibliothèque pour la bitbucket questions API RESTful. J'ai fait de bons progrès et maintenant, je vais attaquer la section La mise à jour d'un Problème qui demande une Requête HTTP PUT.
Maintenant, je suis coincé à cause du Code d'Erreur HTTP 411 Length Required
. Après un peu de recherche sur google, j'ai trouvé le suivant exemple de code:
//CORRECT: get a UTF-8 encoded byte array from the response
//String and set the content-length to the length of the
//resulting byte array.
String response = [insert XML with UTF-8 characters here];
byte[] responseBytes;
try {
responseBytes = response.getBytes("UTF-8");
}
catch ( UnsupportedEncodingException e ) {
System.err.print("My computer hates UTF-8");
}
this.contentLength_ = responseBytes.length;
Maintenant, ma question: Quel est exactement mesurée?
- la chaîne de requête
- la urlencoded chaîne de requête
- seulement les valeurs des paramètres...??
Et est connection.setRequestProperty("Content-Length", String.valueOf(<mycomputedInt>));
un appriopate mode de réglage de la longueur du contenu de l'attribut?
Exemples apprécié. Merci à l'avance.
edit:
Par exemple, vous pourriez expliquer le calcul avec le curl suivante exemple de la bitbucket entrée wiki:
curl -X PUT -d "content=Updated%20Content" \
https://api.bitbucket.org/1.0/repositories/sarahmaddox/sarahmaddox/issues/1/
OriginalL'auteur phineas | 2011-06-15
Vous devez vous connecter pour publier un commentaire.
Votre font la demande, à droite. Le contenu de longueur est le nombre d'octets de votre corps de la requête. Dans votre cas
Précisément ce qui est mesuré?
l'url encodée chaîne de requête (lors de la demande/de l'entité corps)
getBytes
méthode sans spécifier le jeu de caractères.Je suis encore un ptit coincé, mais je pense que cela dépend plutôt de la bitbucket l'api que sur la façon dont je fais les demandes.
OriginalL'auteur webstrap
HTTP spec sur Quatre cent onze:
HTTP spec sur la Contenu de l'en-tête de Longueur:
HTTP spec sur HTTP entité longueur:
Pour résumer, si vous voulez envoyer une liste non-compressé chaîne UTF-8 vous serait de déterminer les octets à envoyer en tant que:
La Longueur du Contenu est défini au nombre d'octets de sortie.
Si vous envoyez des données UTF-8 je voudrais aussi vous suggère fortement de définir un Content-Type en-tête.
OriginalL'auteur johnstok