Estoy desarrollando una aplicación Windows que encripta archivos con OpenGP y luego los envía a una página .PHP que está en un servidor HTTPS.
El problema salta porque no solamente mando archivos, tengo que mandar un total de 15 parámetros: 7 archivos y 8 cadenas de texto.
Lamentablemente no tengo acceso a la aplicación .php y tengo que estar llamando constantemente a cada rato a la empresa que la administra para que me digan qué respondió o que devolvió, y en todos los casos me dicen que la información llega bien... menos los archivos...
Es decir, que los 8 parámetros correspondientes a las diferentes cadenas de texto sí llegan, pero los otros 7 parámetros en donde se supone que tienen que llegar los archivos *.gpg pues no llegan

En definitiva, mi problema son dos:
1) Conocen algún sniffer o programa que me permita ver la respuesta del servidor HTTPS para no andar llamando a cada rato a la empresa? (ya los tengo fastidiados seguramente)

2) Alguien puede darme un ejemplo de cómo postear los parámetros para que, los archivos vayan como archivos y las cadenas de texto vayan como cadenas de texto? imagino que tengo que manipular el "contentType" y esas cosas...
Para quienes puedan ayudarme, les adjunto el código y lo explico un poco:
Código:
private void button2_Click(object sender, System.EventArgs e) { //1) Implemento una interfaz sobreescrita de CertificatePolicy para no tener // problemas con rechazos de certificados del SSL System.Net.ServicePointManager.CertificatePolicy = new MyPolicy(); //2) Obtengo el directorio de donde voy a sacar los archivos DirectoryInfo di = new DirectoryInfo(@"c:\convolgpg"); FileInfo[] rgFiles = di.GetFiles("*.gpg"); //3) Defino la dirección a donde voy a postearstring gatewayUrl = "https://sitio.com/paginita.php"; //4) Creo una instancia del objeto HttpWebResponseHttpWebResponse resp = null; try { //5) Instancio una variable de cadena en donde voy a ir guardando los // resultados que voy a terminar posteando string postData = "&clave=8f247c34e9"; //Le asigno el primer parametro //6) Me fijo en todos los archivos dentro de la carpeta // que instancié más arriba foreach(FileInfo fi in rgFiles) { //7) Los parámetros que me piden son: // Por cada archivo que envío, debo mandar un parámetro adicional // que es el checksum del archivo utilizando SHA1 // Los parametros que me piden son los siguientes: // alarmadispensario ===> es uno de los archivos que tengo que mandar // alarmadispensario_checksum ===> el resultado del SHA1 // lo mismo para los otros archivos. Aqui en el código solo pongo tres de los // 7 archivos porque sino se me hace enorme el código string identificador = fi.Name.Substring(16,3); //Para identificar qué archivo switch(identificador) { case "ADI": string alarmadispensario; using (StreamReader lector = new StreamReader(@"c:\convolgpg\" + fi.Name)) { alarmadispensario = lector.ReadToEnd(); } FileStream f = new FileStream(@"c:\convolgpg\" + fi.Name,FileMode.Open,FileAccess.Read,FileShare.Read, 8192); SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); StringBuilder sb = new StringBuilder(); foreach(byte b in sha1.ComputeHash(f)) { sb.Append(b.ToString("x2").ToLower()); } string alarmadispensarioCS = "&alarmadispensario_checksum=" + sb.ToString(); //8) Al string postData le agrego los dos nuevos parámetrospostData += "&alarmadispensario=" + alarmadispensario; postData += alarmadispensarioCS; break; case "ATQ": string alarmatanque; using (StreamReader lector = new StreamReader(@"c:\convolgpg\" + fi.Name)) { alarmatanque = lector.ReadToEnd(); } f = new FileStream(@"c:\convolgpg\" + fi.Name,FileMode.Open,FileAccess.Read,FileShare.Read, 8192); sha1 = new SHA1CryptoServiceProvider(); sb = new StringBuilder(); foreach(byte b in sha1.ComputeHash(f)) { sb.Append(b.ToString("x2").ToLower()); } string alarmatanqueCS = "&alarmatanque_checksum=" + sb.ToString(); //9) Y le agrego los otros dos nuevos parámetros...postData += "&alarmatanque=" + alarmatanque; postData += alarmatanqueCS; break; case "VTA": string ventas; using (StreamReader lector = new StreamReader(@"c:\convolgpg\" + fi.Name)) { ventas = lector.ReadToEnd(); } f = new FileStream(@"c:\convolgpg\" + fi.Name,FileMode.Open,FileAccess.Read,FileShare.Read, 8192); sha1 = new SHA1CryptoServiceProvider(); sb = new StringBuilder(); foreach(byte b in sha1.ComputeHash(f)) { sb.Append(b.ToString("x2").ToLower()); } string ventasCS = "&ventas_checksum=" + sb.ToString(); //10) Y por último los últimos dos // (en total se supone que tengo 7 parámetros) postData += "&ventas=" + ventas; postData += ventasCS; break; } } //11) Genero una nueva instancia para presentar mis credenciales al sitioCredentialCache myCred = new CredentialCache(); myCred.Add(new Uri("https://sitio.com"),"BASIC",new NetworkCredential("usuario","password")); //12) Genero una nueva instancia del objeto HttpWebRequestHttpWebRequest request = (HttpWebRequest)WebRequest.Create(gatewayUrl); //13) Le asigno las credenciales que hicerequest.Credentials = myCred; //14) Le indico el User Agentrequest.UserAgent ="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"; //15) En un arreglo de bytes byte[] postDataBytes = Encoding.UTF8.GetBytes(postData); //16) El resto supongo que no hace falta que lo explique:request.Method = "POST"; request.ContentType = "automatic/name"; request.ContentLength = postDataBytes.Length; Stream requestStream = request.GetRequestStream(); requestStream.Write(postDataBytes, 0 ,postDataBytes.Length); resp = (HttpWebResponse)request.GetResponse(); StreamReader responseReader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8); resp.Close(); requestStream.Close(); } catch() { } finally { if ( resp != null ) { resp.Close(); } } }
Que estoy haciendo mal??????
Que me falta por ordenar / arreglar / quitar?????
Por favor ayúdenme
