HttpWebRequest: ¿Cómo encontrar un código postal en Canada Post a través de una solicitud web con x-www-form-enclosed?

Actualmente estoy escribiendo algunas pruebas para poder mejorar mis habilidades con la interacción de Internet a través de Windows Forms. Una de esas pruebas es encontrar un código postal que debe ser devuelto por el sitio web de Canada Post.

Mi configuración de URL predeterminada se establece en:http://www.canadapost.ca/cpotools/apps/fpc/personal/findByCity?execution=e4s1Los campos de formulario requeridos son:número de calle, nombre de la calle, ciudad, provinciaEl contentType es "application / x-www-form-enclosed"

EDITAR: Considere el valor "application / x-www-form-encoded" en lugar del valor del punto 3 como contentType. (Gracias EricLaw-MSFT!)

El resultado que obtengo no es el resultado esperado. Obtengo el código fuente HTML de la página donde pude ingresar manualmente la información para encontrar el código postal, pero no el código fuente HTML con el código postal encontrado. ¿Alguna idea de lo que estoy haciendo mal?

¿Debo considerar ir por el camino XML? ¿Es posible, en primer lugar, buscar en Canada Post de forma anónima?

Aquí hay un ejemplo de código para una mejor descripción:

public static string FindPostalCode(ICanadadianAddress address) {
   var postData = string.Concat(string.Format("&streetNumber={0}", address.StreetNumber)
    , string.Format("&streetName={0}", address.StreetName)
    , string.Format("&city={0}", address.City)
    , string.Format("&province={0}", address.Province));

   var encoding = new ASCIIEncoding();
   byte[] postDataBytes = encoding.GetBytes(postData);
   request = (HttpWebRequest)WebRequest.Create(DefaultUrlSettings);
   request.ImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Anonymous;
   request.Container = new CookieContainer();
   request.Timeout = 10000;
   request.ContentType = contentType;
   request.ContentLength = postDataBytes.LongLength;
   request.Method = @"post";
   var senderStream = new StreamWriter(request.GetRequestStream());
   senderStream.Write(postDataBytes, 0, postDataBytes.Length);
   senderStream.Close();
   string htmlResponse = new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd();

   return processedResult(htmlResponse); // Processing the HTML source code parsing, etc.
}

Parezco atorado en un cuello de botella en mi punto de vista. No encuentro salida al resultado deseado.

EDITAR: Parece que hay parámetros para el ContentType de este sitio. Dejame explicar.

Hay uno con las variables "meta" que estipula lo siguiente:

meta http-equiv = "Content-Type" content = "application / xhtml + xml, text / xml, text / html; charset = utf-8"

Y otro más adelante, bajando el código que se lee como:

form id = "fpcByAdvancedSearch: fpcSearch" name = "fpcByAdvancedSearch: fpcSearch" method = "post" action = "/ cpotools / apps / fpc / personal / findByCity? ejecución = e1s1" enctype = "application / x-www-form-urloded" "

Mi pregunta es la siguiente: ¿Con cuál tengo que atenerme?

Déjame adivinar, ¿el primer ContentType debe considerarse como el segundo es solo para otra solicitud a una función o algo así cuando se publican los datos?

EDITAR: Según la solicitud, el más cercano a la solución que estoy aparece en esta pregunta:Solicitud web: cómo encontrar un código postal mediante una solicitud web contra este ContentType = ”application / xhtml + xml, text / xml, text / html; conjunto de caracteres = utf-8 ”?

¡Gracias por cualquier ayuda! :-)

Respuestas a la pregunta(2)

Su respuesta a la pregunta