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.