Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [c#] Http Post

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    60

    [c#] Http Post

    Salve ragazzi, ho un problema.
    Nel corso di un progetto devo inviare una richiesta HTTP mediante metodo POST e ho fatto così:

    codice:
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8090/BrowserUsageMonitorServer");
    request.Method = "POST"; 
    string postData = "This is a test that posts this string to a Web server."; 
    byte[] byteArray = Encoding.UTF8.GetBytes (postData); 
    request.ContentType = "application/x-www-form-urlencoded"; 
    request.ContentLength = byteArray.Length; 
    request.ProtocolVersion = HttpVersion.Version11;  
    Stream dataStream = request.GetRequestStream ();  
    dataStream.Write (byteArray, 0, byteArray.Length); 
    dataStream.Close ();  
    WebResponse response = request.GetResponse ();  
    Console.WriteLine (((HttpWebResponse)response).StatusDescription); 
    dataStream = response.GetResponseStream ();  
    StreamReader reader = new StreamReader (dataStream); 
    string responseFromServer = reader.ReadToEnd ();  
    Console.WriteLine (responseFromServer);  
    reader.Close (); 
    dataStream.Close (); 
    response.Close ();

    Come Web Server, "dall'altra parte", utilizzo Apache Tomcat, gestito da una semplice pagina index.jsp, così implementata:

    codice:
     
    System.out.println(request.getMethod());
    if(request.getMethod().equals("POST")){
      System.out.println("MESSAGGIO ARRIVATO");
      String clientIdentifier = request.getHeader("CLIENT_ID");
      String dataType = request.getHeader("DATA_TYPE");
      System.out.println("CID="+clientIdentifier + "  " + "DATA_TYPE="+dataType);
      ArrayList<String> postContent = new ArrayList<String>();
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(request.getInputStream()));
      String line = "";
      while((line = bufferedReader.readLine()) != null){
        if(!line.equals("")){
          System.out.println("--> " + line);
          postContent.add(line);
        }
      }
      bufferedReader.close();
      response.setStatus(200);
    }
    else if(request.getMethod().equals("GET")){
      response.setStatus(200);
    }
    Ho due grandi problemi problemi:
    • 1. Se imposto
      codice:
      request.ProtocolVersion = HttpVersion.Version11
      mi torna errore 505, ossia HTTP Protocol Version Not Supported. C'è qualcosa che devo cambiare in Apache Tomcat oppure ho sbagliato ad impostare qualcosa sul mio programmino C#?
    • 2. Questo invece è un problema più grande. Quando invio la richiesta con C# (il codice l'ho preso da MSDN) arriva al server ma viene vista come una GET. Come se non riconoscesse una richiesta di tipo POST. Dove sbaglio?


    Grazie a chi potrà aiutarmi.
    "Gli ingegneri progettano il vostro futuro...e loro lo costruiranno..."

  2. #2
    1) Molto probabilmente la versione del Tomcat che usi non supporta la versione 1.1 prova a mettere la 2 oppure commenta del tutto quella riga che è superflua.

    2) Probabilmente il tuo POST arriverà di sicuro filtrato da qualche servlet che rigira la richiesta in GET alla jsp.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.