Tengo esto:
byte[] raw = wc.DownloadData(laUrl);
Y funciona correctamente.
Sin embargo intento ponerlo así:
string raw = wc.DownloadData(laUrl);
Y me subraya la definición de la variable. ¿Qué diferencia hay entre esas dos variables?
Byte y
String son dos
types diferentes, además, la primera variable es un
Array de Bytes.
Para que la segunda orden te funcionase, deberías utilizar la función
WebClient.DownloadString, aunque imagino que eso no es lo que pretendes hacer realmente.
➢
WebClient.DownloadString Method - MSDN No entiendo muy bien cual es tu duda respecto a eso, ya que se ve claramente que son dos tipos diferentes, pues no es lo mismo un byte que una cadena de texto, aunque esta consista en bytes de datos (concretamente un buffer de 1 byte por cada caracter ANSI o 2 bytes por cada caracter Unicode).
¿Y esta función exactamente que realiza?
string webData = System.Text.Encoding.UTF8.GetString(raw);
Parece que se codifica... ¿por qué?
Al contrario, se descodifica.
Teniendo un array de bytes (que supuestamente contengan caracteres UTF-8), dicha función decodifica los bytes para representarlos en una cadena de texto usando dicha codificación de texto, UTF-8.
Cuando no estés seguro del propósito de un método, función, o cualquier otro tipo demiembro, es tan simple como que pases el puntero del mouse por encima del nombre del método en la IDE de
Visual Studio... de esta manera
IntelliSense te informará de todos los detalles incluyendo sus parámetros y no tendrás que preguntar "
¿qué hace esto?" o "
¿cómo se usa?".
También puedes usar el
Object Inspector en la IDE, o recurrir a la referencia online (u offline) de la
MSDN:
➢
Encoding.GetString Method (Byte()) - MSDN
He visto que son los sockets también en transmite de mensajes se hace mediante byte[] ¿por qué?
Por qué los paquetes que se transmiten contienen eso, una serie de bytes, que luego debes interpretar/descifrar.
Saludos