HTTP post en Java ne publie pas côté serveur [dupliquer]


Cette question a déjà des réponses ici: Comment utiliser java. net. URLConnection pour déclencher et gérer les requêtes HTTP? (11 réponses) Fermé il y a 5 ans.

J'essaie de publier des données en utilisant HTTP post mais je ne vois pas les données à l'autre extrémité (serveur). Lorsque j'exécute le programme, je reçois un code de réponse 200 (succès) mais lorsque je vérifie par recoupement, aucune donnée n'est trouvée à l'autre extrémité

private void sendPost() throws Exception {

    String url = "https://example.com/post/index.php";
    URL obj = new URL(url);

    HttpsURLConnection con = (HttpsURLConnection)obj.openConnection();


    //add reuqest header
    con.setRequestMethod("POST");
    con.setRequestProperty("User-Agent", USER_AGENT);
    con.setRequestProperty("charset", "utf-8");



    String urlParameters = "username=userpv&password=pvpwd&admin_username=&admin_password=&action=add&requisition_number=403555&return_url=&error_url=www.some.com&error_format=1";

    // urlParameters string is very long

    con.setDoOutput(true);
    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(urlParameters);
    wr.flush();
    wr.close();

    int responseCode = con.getResponseCode();
    System.out.println("\nSending 'POST' request to URL : " + url);
    System.out.println("Post parameters : " + urlParameters);
    System.out.println("Response Code : " + responseCode);

    BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));


    String inputLine;
    StringBuffer response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
        System.out.println(inputLine);
    }
    in.close();

    //print result
    //System.out.println(response.toString());

}

Quelqu'un peut-il me dire ce qui ne va pas avec mon code?

Author: durron597, 2014-05-28

1 answers

J'ai testé votre code avec cette url 'https://posttestserver.com/post.php?dir=example " et cela semble ok. Êtes-vous sûr que le problème n'est pas du côté du serveur?

   public static void main (String[] args) throws IOException {

      String url = "https://posttestserver.com/post.php?dir=example";
      URL obj = new URL(url);

      HttpsURLConnection con = (HttpsURLConnection)obj.openConnection();

      //add reuqest header
      con.setRequestMethod("POST");
      con.setRequestProperty("User-Agent", "AGENT");
      con.setRequestProperty("charset", "utf-8");     

      String urlParameters = "username=userpv&password=pvpwd&admin_username=&admin_password=&action=add&requisition_number=403555&return_url=&error_url=www.some.com&error_format=1";

      // urlParameters string is very long

      con.setDoOutput(true);
      DataOutputStream wr = new DataOutputStream(con.getOutputStream());
      wr.writeBytes(urlParameters);
      wr.flush();
      wr.close();

      int responseCode = con.getResponseCode();
      System.out.println("\nSending 'POST' request to URL : " + url);
      System.out.println("Post parameters : " + urlParameters);
      System.out.println("Response Code : " + responseCode);

      BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

      String inputLine;
      StringBuffer response = new StringBuffer();

      while ((inputLine = in.readLine()) != null) {
          System.out.println(inputLine);
      }
      in.close();

      //print result
      //System.out.println(response.toString());      
   }

Ceci est le résultat de posttestserver:

Time: Mon, 25 Aug 14 00:51:01 -0700
Source ip: xxx.xxx.xxx.xxx

Headers (Some may be inserted by server)
REQUEST_URI = /post.php?dir=example
QUERY_STRING = dir=example
REQUEST_METHOD = POST
GATEWAY_INTERFACE = CGI/1.1
REMOTE_PORT = 54235
REMOTE_ADDR = xxx.xxx.xxx.xxx
CONTENT_LENGTH = 149
CONTENT_TYPE = application/x-www-form-urlencoded
HTTP_CONNECTION = close
HTTP_ACCEPT = text/html, image/gif, image/jpeg, *; q=.2
HTTP_HOST = posttestserver.com
HTTP_CHARSET = utf-8
HTTP_USER_AGENT = AGENT
HTTPS = on
UNIQUE_ID = U-rq5dBx6hIAAHdXN9wAAAAL
REQUEST_TIME_FLOAT = 1408953061.0627
REQUEST_TIME = 1408953061

Post Params:
key: 'username' value: 'userpv'
key: 'password' value: 'pvpwd'
key: 'admin_username' value: ''
key: 'admin_password' value: ''
key: 'action' value: 'add'
key: 'requisition_number' value: '403555'
key: 'return_url' value: ''
key: 'error_url' value: 'www.some.com'
key: 'error_format' value: '1'
Empty post body.

Upload contains PUT data:
username=userpv&password=pvpwd&admin_username=&admin_password=&action=add&requisition_number=403555&return_url=&error_url=www.some.com&error_format=1
 1
Author: Tobías, 2016-01-13 16:10:54