web-dev-qa-db-fra.com

HTTP 415 lors de l'envoi d'un objet JSON à l'aide de POST

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?

19
Sandesh Sharma

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
39
user647772

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.

0
Luke M Willis