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.