C# 2.0
Dovevo effettuare una richiesta POST ad un Url passando alcuni
parametri e per far questo ho utilizzato le seguenti righe di codice:
string url = "http://pippo.it/api";
WSSEDigest wsseDigest = new WSSEDigest();
string token = wsseDigest.GetPasswordDigestAsBase64(userName,
password);
HttpWebRequest webReq = (HttpWebRequest) WebRequest.Create(url);
webReq.Method = "POST";
webReq.Headers["X-WSSE"] = token;
webReq.ContentType = "application/x-www-form-urlencoded";
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(uriRequestBurn.Parameters);
Stream requestParametersStream = webReq.GetRequestStream();
requestParametersStream.Write(data, 0, data.Length);
requestParametersStream.Close();
try
{
HttpWebResponse webResp = (HttpWebResponse) webReq.GetResponse();
Stream answer = webResp.GetResponseStream();
StreamReader answerReader = new StreamReader(answer);
string responseContent = answerReader.ReadToEnd();
}
catch (WebException ex)
{
Stream answer = ex.Response.GetResponseStream();
StreamReader answerReader = new StreamReader(answer);
string message = ex.Message;
string responseContent = answerReader.ReadToEnd();
}
Inizialmente non specificavo il content-type ed avevo la
seguente anomalia: per alcune chiamate tutto andava bene per altre invece mi
ritornava sempre una Web Eception, anche analizzando il flusso dati con Fiddler
tutto mi sembrava corretto, i parametri sembravano
sempre valorizzati allo stesso modo, peccato però che dalla parte del servizio
arrivasse, in questo caso, sempre un array vuoto.
Alla fine grazie al Plug-In Poster di Firefox sono riuscito a capire che il problema
stava nel Content-Type.
Nessun commento:
Posta un commento