PDA

Ver la versión completa : webservices



rower
13-08-2008, 05:36
hola como andan, tanto tiempo

estoy con una duda, creo que es sumamente básica, pero a esta altura ya no puedo razonar bien

estoy haciendo un trabajo para la facultad, donde tengo que implementar un webservice. A grandes rasgos, utilizo una arquitectura de 3 capas, donde la capa del medio (la capa de negocio) la implemento como un webservice, bueno, el tema es que suponiendo que tengo un archivo .txt y quiero grabar el contenido del mismo en una base de datos remota; en la aplicación que estoy desarrollando, por ejemplo C#.NET, invoco un método del webservice (desarrollado en PHP) que me permita enviar este archivo y grabarlo en la base de datos, ahora la pregunta: qué tipo de parámetro tendría que recibir el método del webservice? es decir, como qué tipo de dato debo pasar este archivo como parámetro? debería transformarlo en XML y en el método del webservice indicar que recibe un XML? o como un string?

no se si se entiende mi duda, espero que si

muchas gracias

j8k6f4v9j
13-08-2008, 10:43
Sí, debes usar

using System.Xml.Serialization;
y

using System.Web.Services;
using System.Web.Services.Protocols;
y luego implementar lo que creo que se llamaba "interfaz" (no me hagas mucho caso, no estoy en mi verdadero campo xD)

public class ArchivoBD: WebService
{
blah blah
}


Salu2



http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad:

rower
13-08-2008, 14:45
mmm si algo así es, pero mi duda es, como qué tipo de dato debería pasar un archivo como parámetro, por ejemplo si mi webservice tiene un método que se llama enviar, que recibe un parámetro, algo así: webservice.enviar(), dentro del enviar, si yo quiero enviar el archivo, qué es lo que debería poner? el path del archivo? un string con el contenido en XML?, o simplemente una variable del tipo file que sea el archivo? porque el problema es que en el webservice, que estará desarrollado en php, no existirá ese tipo de dato
gracias

j8k6f4v9j
13-08-2008, 15:06
Supongo que debes buscar un punto de enlace. Échale un ojo a esto a ver si te sirve:
http://www.desarrolloweb.com/scripts/cxs-php.html

Edito: Aquí tienes unos ejemplos de serialización en C#
http://www.devhood.com/Tutorials/tutorial_details.aspx?tutorial_id=236

Salu2



http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad:

gondar_f
13-08-2008, 19:12
He llegado tarde al tema, pero creo que os complicais la vida innecesariamente. Salvo que os le exigan especificamente, yo usaría el método de toda la vida:
-página web para cargar el archivo
-página web (o servicio, realmente en este caso no hay diferencia apreciable en el código) para recibirlo y procesarlo.

Para la interfaz html con algo así llega:

<form action="servicioweb.php" method="post" enctype="multipart/form-data">
Campo de tipo texto:
<input type="text" name="cadena" size="20" maxlength="75">
<input type="hidden" name="MAX_FILE_SIZE" value="500000">
<br>
Archivo a enviar:
<input name="archivo" type="file">
<input type="submit" value="Mandar">
</form>

Y en el servidor (ya que dices php), simplemente tienes que usar:

$HTTP_POST_FILES['archivo']['name']
Nombre archivo

$HTTP_POST_FILES['archivo']['type']
Tipo MIME, ejemplo "image/jpg".

$HTTP_POST_FILES['archivo']['size']
Tamaño fichero (en bytes)

$HTTP_POST_FILES['archivo']['tmp_name']
Nombre del temporal con que lo guardas en el server

Una vez que lo tienes en el servidor, lo procesas y listo.

Es la forma más sencilla que se de hacerlo. Aunque, advierto: windows+php+upload de archivo no va muy bien, ahí en donde estea un buen FreeBSD o Solaris (Linux tambien puede servir perfectamente) que se quiete el resto.

Un Saludo

McLik
21-08-2008, 18:21
Tratas un string y un xml como cosas distintas :), es lo mismo, dentor del metodo lo manipulas como vos quieras, pero lo que pasas es un string. Podes usar los componentes de ajax que facilitan mucho la utilizacion de web services.