/// <summary> /// Extrae los tokens de acceso de una respuesta /// </summary> private void ExtractTokensAccess(ResponseMessage objResponse, out string strOAuthToken, out string strOAuthTokenSecret) { // Inicializa los valores de salida strOAuthToken = null; strOAuthTokenSecret = null; // Obtiene los tokens de la respuesta if (!objResponse.IsError && !objResponse.Body.IsEmpty()) { string [] arrStrBody = objResponse.Body.Split('&'); // Recorre el array buscando las cadenas if (arrStrBody != null && arrStrBody.Length > 0) foreach (string strBody in arrStrBody) { string [] arrStrQuery = strBody.Split('='); if (arrStrQuery != null && arrStrQuery.Length == 2) { if (arrStrQuery[0].EqualsIgnoreCase("oauth_token")) strOAuthToken = arrStrQuery[1]; else if (arrStrQuery[0].EqualsIgnoreCase("oauth_token_secret")) strOAuthTokenSecret = arrStrQuery[1]; } } } }
/// <summary> /// Muestra la respuesta /// </summary> private void ShowResponse(ResponseMessage objResponse) { txtResult.AppendText("Estado: " + (int) objResponse.Status + " -- " + objResponse.Status.ToString() + Environment.NewLine); txtResult.AppendText(Environment.NewLine + "--------------------------------------" + Environment.NewLine); txtResult.AppendText("Cabeceras:" + Environment.NewLine); foreach (Header objHeader in objResponse.Headers) txtResult.AppendText(objHeader.Key + ": " + objHeader.Value + Environment.NewLine); txtResult.AppendText(Environment.NewLine + "--------------------------------------" + Environment.NewLine); txtResult.AppendText("Cuerpo:" + Environment.NewLine); txtResult.AppendText(GetBody(objResponse.Body) + Environment.NewLine); txtResult.AppendText("=======================================================" + Environment.NewLine); }
/// <summary> /// Lee las cabeceras de una respuesta /// </summary> private void ReadHeaders(HttpWebResponse objHttpResponse, ResponseMessage objResult) { foreach (string strKey in objHttpResponse.Headers.Keys) objResult.Headers.Add(strKey, objHttpResponse.Headers[strKey]); }
/// <summary> /// Muestra la respuesta de una instrucción /// </summary> private void ShowResponse(ResponseMessage objResponse) { // Estado AddLog("Estado", (int) objResponse.Status + " -- " + objResponse.Status.ToString()); AddLogSeparator(false); // Datos del mensaje ShowMessage(objResponse); }
/// <summary> /// Procesa la respuesta de la Web /// </summary> private ResponseMessage GetResponse(HttpWebRequest objHtppRequest) { ResponseMessage objResult = new ResponseMessage(HttpStatusCode.InternalServerError, "Error interno", new NotImplementedException()); // Obtiene la respuesta try { byte [] arrBytData; // Crea una respuesta en principio, correcta objResult = new ResponseMessage(HttpStatusCode.OK, "No enviado"); // Obtiene la respuesta del servidor using (HttpWebResponse objHttpResponse = (HttpWebResponse) objHtppRequest.GetResponse()) { // Lee los datos en un stream en memoria using (Stream stmResponse = objHttpResponse.GetResponseStream()) { // Copia la respuesta en memoria using (MemoryStream stmMemory = new MemoryStream(cnstIntBufferLength)) { byte[] arrBytBuffer = new byte[cnstIntBufferLength]; int intBytes; // Lee el stream de respuesta en un array de bytes while ((intBytes = stmResponse.Read(arrBytBuffer, 0, arrBytBuffer.Length)) > 0) stmMemory.Write(arrBytBuffer, 0, intBytes); // Pasa el stream en memoria a un array de bytes arrBytData = stmMemory.ToArray(); // Cierra el stream de memoria stmMemory.Close(); } // Cierra el stream de entrada stmResponse.Close(); } // Obtiene el resultado objResult.ContentEncoding = objHttpResponse.ContentEncoding; objResult.ContentLength = objHttpResponse.ContentLength; objResult.ContentType = objHttpResponse.ContentType; // objResult.Cookies = objHttpResponse.Cookies; objResult.IsFromCache = objHttpResponse.IsFromCache; objResult.IsMutuallyAuthenticated = objHttpResponse.IsMutuallyAuthenticated; objResult.LastModified = objHttpResponse.LastModified; objResult.Method = objHttpResponse.Method; objResult.ProtocolVersion = objHttpResponse.ProtocolVersion; objResult.ResponseUri = objHttpResponse.ResponseUri; objResult.Server = objHttpResponse.Server; objResult.Status = objHttpResponse.StatusCode; objResult.StatusDescription = objHttpResponse.StatusDescription; // Obtiene el cuerpo del mensaje objResult.Body = System.Text.Encoding.Default.GetString(arrBytData); // Asigna las cabeceras foreach (string strKey in objHttpResponse.Headers.Keys) objResult.Headers.Add(strKey, objHttpResponse.Headers[strKey]); } } catch (WebException objWebException) { objResult = new ResponseMessage(HttpStatusCode.BadRequest, ComputeException(objWebException), objWebException); } catch (Exception objException) { objResult = new ResponseMessage(HttpStatusCode.BadRequest, "Excepción", objException); } // Devuelve la respuesta return objResult; }