import Java.io.BufferedReader;
import Java.io.InputStreamReader;
import Java.net.HttpURLConnection;
import Java.net.URL;
import Java.io.DataOutputStream;
import Java.io.InputStream;
public class TestingPost {
public static void main(String args[]) {
URL url;
HttpURLConnection connection = null;
String targetURL=".....";//here is my local server url
String urlParameters="{\"clubhash\":\"100457d41b9-ab22-4825-9393-ac7f6e8ff961\",\"username\":\"anonymous\",\"message\":\"simply awesome\",\"timestamp\":\"2012/11/05 13:00:00\"}";
try {
//Create connection
url = new URL(targetURL);
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
connection.setRequestProperty("Content-Length", "" +
Integer.toString(urlParameters.getBytes().length));
connection.setRequestProperty("Content-Language", "en-US");
connection.setUseCaches (false);
connection.setDoInput(true);
connection.setDoOutput(true);
//Send request
DataOutputStream wr = new DataOutputStream (
connection.getOutputStream ());
wr.writeBytes (urlParameters);
wr.flush ();
wr.close ();
//Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response = new StringBuffer();
while((line = rd.readLine()) != null) {
response.append(line);
response.append('\r');
}
rd.close();
System.out.println("message="+response.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
if(connection != null) {
connection.disconnect();
}
}
}
}
J'essaie d'envoyer un objet JSON à l'aide de la méthode HTTP POST. Ci-dessus, le code mais je reçois
Java.io.IOException: Server returned HTTP response code: 415 for URL: ....
at Sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at TestingPost.main(TestingPost.Java:38)"
Quel est le problème avec mon code?
Le code de réponse HTTP que vous obtenez est
415 Unsupported Media Type
Cela signifie que le serveur ne peut pas gérer le format que vous lui avez envoyé. Votre requête HTTP définit cet en-tête:
Content-Type: application/x-www-form-urlencoded
C'est le type de contenu envoyé par un navigateur si un formulaire est soumis. Si vous souhaitez envoyer du JSON, utilisez cet en-tête:
Content-Type: application/json
Je passais correctement
Content-Type: application/json
Mais mon serveur rejetait toujours la demande parce que je passais aussi
Accept: application/json
Ce qui n'était pas permis dans mon cas.