J'utilise HttpConnect et j'essaie d'obtenir un jeton du serveur. Mais chaque fois que j'essaie d'obtenir la réponse, c'est toujours dire que vous n'avez pas défini de problème de longueur de contenu, même si j'ai essayé de définir la longueur de contenu de différentes manières.
conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod(method);
conn.setRequestProperty("X-DocuSign-Authentication", httpAuthHeader);
conn.setRequestProperty("Accept", "application/json");
if (method.equalsIgnoreCase("POST")) {
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", Integer.toString(body.length()));
conn.setDoOutput(true);
}
status = conn.getResponseCode(); // triggers the request
if (status != 200) { //// 200 = OK
errorParse(conn, status);
return;
}
InputStream is = conn.getInputStream();
Passer de HttpConnect
à HttpClient
a fonctionné pour moi. Je me suis donc éloigné de HttpURLConnection
pour créer un objet http HttpClient
et appeler des méthodes d'exécution pour obtenir des données du serveur.
Ci-dessous, le code qui crée une requête http en utilisant HttpClient
plutôt HttpURLConnection
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(authUrl);
String json = "";
JSONObject jsonObject = new JSONObject();
jsonObject.accumulate("phone", "phone");
json = jsonObject.toString();
StringEntity se = new StringEntity(json);
httpPost.setEntity(se);
httpPost.addHeader("Accept", "application/json");
httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded");
HttpResponse httpResponse = httpclient.execute(httpPost);
// 9. receive response as inputStream
inputStream = httpResponse.getEntity().getContent();
String response = getResponseBody(inputStream);
System.out.println(response);
} catch (ClientProtocolException e) {
System.out.println("ClientProtocolException : " + e.getLocalizedMessage());
} catch (IOException e) {
System.out.println("IOException:" + e.getLocalizedMessage());
} catch (Exception e) {
System.out.println("Exception:" + e.getLocalizedMessage());
}
Vous définissez une longueur de contenu mais n'envoyez jamais de corps de requête.
Ne pas définir la longueur du contenu. Java le fait pour vous.
NB setDoOutput(true)
définit la méthode sur POST.