Sto chiamando un'API ospitata sul server Apache per pubblicare i dati. Sto usando HttpWebRequest per eseguire POST in C#.GetRequestStream() genera un'eccezione di timeout durante la pubblicazione dei dati nell'URL HTTPS
L'API ha sia la porta normale HTTP che quella del livello sicuro (HTTPS) sul server. Quando chiamo HTTP URL funziona perfettamente. Tuttavia, quando chiamo HTTPS mi dà un'eccezione di timeout (alla funzione GetRequestStream()). Qualche intuizione? Sto usando VS 2010, .Net framework 3.5 e C#. Ecco il blocco di codice:
string json_value = jsonSerializer.Serialize(data);
HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create("https://server-url-xxxx.com");
request.Method = "POST";
request.ProtocolVersion = System.Net.HttpVersion.Version10;
request.ContentType = "application/x-www-form-urlencoded";
byte[] buffer = Encoding.ASCII.GetBytes(json_value);
request.ContentLength = buffer.Length;
System.IO.Stream reqStream = request.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();
EDIT: Il programma di console suggerito da Peter funziona bene. Ma quando aggiungo i dati (in formato JSON) che devono essere postati nell'API, esso getta un'eccezione scaduta dall'operazione. Ecco il codice che aggiungo all'applicazione basata su console e genera un errore.
byte[] buffer = Encoding.ASCII.GetBytes(json_value);
request.ContentLength = buffer.Length;
Puoi provare senza la ProtocolVersion e ContentType – Peter
anche ottenere Wireshark e dare un'occhiata a ciò che sta accadendo attraverso il filo. controlla che il server di destinazione accetti le chiamate crossdomain. – Peter
Grazie Peter. Ho aggiunto ProtocolVersion e ContentType ma sembra che non sia stato di grande aiuto. Verificherò con wireshark, ma poiché l'app Python può facilmente passare a GET/POST in API, credo che il server stia accettando chiamate interdominio. – Wiz