Ayudita Enviar un form con datos. (txtuser.text, y un file adjun

21/07/2006 - 19:20 por Enviar un form con HttpWebrequest | Informe spam
Hola necesitaria por favor si alguien me puede dar una mano con el siguiente
caso
Necesito simular el envio de un form como este:
<FORM METHOD="POST" ENCTYPE="multipart/form-data"
action="http://sitio/pagina.asp">
<INPUT type="text" name="user">
<INPUT type="password" name="password">
<INPUT type="file" name="file">
<INPUT type="submit" VALUE="Submit">

Estoy trabajando con la clase Httpwebrequest y
si bien no tengo problemas para enviar por ejemlo los datos como son el
"user" y "password" se me complica y no se como hacer para enviar en esta
misma peticion un archivo adjunto. los codigos con los cuales estoy luchando
actualmente son dos ejemplos que paso a continuacion:

'(EJEMPLO 1) VB.NET
Imports System.Net
Imports System.IO
Imports System.Text
Dim objRequest As HttpWebRequest
Dim strRequest As String
Dim arrRequest As Byte()
Dim objUTF8Enconding As UTF8Encoding
Dim strmRequest As Stream
Dim objResponse As HttpWebResponse
Dim srResponse As StreamReader
'**Inicializa objeto de solicitud
objRequest = CType(WebRequest.Create("http://Sitio/pagina.asp"),
HttpWebRequest)
objRequest.Method = "POST"
'**objRequest.ContentType = "application/x-www-form-urlencoded"
objRequest.ContentType = "multipart/form-data"
'**Crear Cuerpo de Solicitud
Dim Archivo As StreamReader = New StreamReader("C:\file.txt")
strRequest = "user=" & Server.UrlEncode(txtUser.Value) & "&" & "password=" &
Server.UrlEncode(txtPassword.Value) & "&" & "file=" & Archivo.ReadToEnd()
objUTF8Enconding = New UTF8Encoding
arrRequest = objUTF8Enconding.GetBytes(strRequest)

'**Añade el cuerpo a la Solicitud
objRequest.ContentLength = arrRequest.Length
strmRequest = objRequest.GetRequestStream()
strmRequest.Write(arrRequest, 0, arrRequest.Length)
strmRequest.Close()
'**Obtengo la respuesta
objResponse = objRequest.GetResponse()
srResponse = New StreamReader(objResponse.GetResponseStream(),
System.Text.Encoding.ASCII)
Response.Write(srResponse.ReadToEnd())
srResponse.Close()
'-
//(EJEMPLO 2) C#.NET
string URLstring = "http://Sitio/pagina.asp";
WebClient myWebClient= new WebClient();
NameValueCollection miCol= new NameValueCollection();
StreamReader Archivo= new
StreamReader("C:\\File.txt",System.Text.Encoding.ASCII);
myWebClient.Headers.Add("enctype","multipart/form-data");
miCol.Add("user=",txtUser.text);
miCol.Add("password=", txtPassword.text);
miCol.Add("file=",Archivo.ReadToEnd());
byte[] bArray = myWebClient.UploadValues(URLstring, "POST", miCol);
Archivo.Close();
string sTr = Encoding.ASCII.GetString(bArray);
Console.Write(sTr);
Console.ReadLine();
//

Si intento enviar solo los datos (User y Password) no tengo ningun problema,
el tema es cuando quiero enviar conjunto a ellos el archivo adjunto, como si
lo hiciera
a traves de un form (haciendo Submit en forma manual).

he recorrido todos los libros ,foros y sitios de internet y no he encontardo
algo similar . Alguien me podria dar una ayudita por favor o acercarme algun
codigo similar estos dos ejemplos ???
desde ya muchas gracias

salu2
Marcelo
 

Leer las respuestas

#1 Jesús López
24/07/2006 - 09:36 | Informe spam
Descárgate el Fiddler. Con esta herramienta podrás ver la petición HTTP que
hace el Internet Explorer y así podrás tú una igual.


http://www.fiddlertool.com/fiddler/


Saludos:

Jesús López

"Enviar un form con HttpWebrequest" escribió:

Hola necesitaria por favor si alguien me puede dar una mano con el siguiente
caso
Necesito simular el envio de un form como este:
<FORM METHOD="POST" ENCTYPE="multipart/form-data"
action="http://sitio/pagina.asp">
<INPUT type="text" name="user">
<INPUT type="password" name="password">
<INPUT type="file" name="file">
<INPUT type="submit" VALUE="Submit">

Estoy trabajando con la clase Httpwebrequest y
si bien no tengo problemas para enviar por ejemlo los datos como son el
"user" y "password" se me complica y no se como hacer para enviar en esta
misma peticion un archivo adjunto. los codigos con los cuales estoy luchando
actualmente son dos ejemplos que paso a continuacion:

'(EJEMPLO 1) VB.NET
Imports System.Net
Imports System.IO
Imports System.Text
Dim objRequest As HttpWebRequest
Dim strRequest As String
Dim arrRequest As Byte()
Dim objUTF8Enconding As UTF8Encoding
Dim strmRequest As Stream
Dim objResponse As HttpWebResponse
Dim srResponse As StreamReader
'**Inicializa objeto de solicitud
objRequest = CType(WebRequest.Create("http://Sitio/pagina.asp"),
HttpWebRequest)
objRequest.Method = "POST"
'**objRequest.ContentType = "application/x-www-form-urlencoded"
objRequest.ContentType = "multipart/form-data"
'**Crear Cuerpo de Solicitud
Dim Archivo As StreamReader = New StreamReader("C:\file.txt")
strRequest = "user=" & Server.UrlEncode(txtUser.Value) & "&" & "password=" &
Server.UrlEncode(txtPassword.Value) & "&" & "file=" & Archivo.ReadToEnd()
objUTF8Enconding = New UTF8Encoding
arrRequest = objUTF8Enconding.GetBytes(strRequest)

'**Añade el cuerpo a la Solicitud
objRequest.ContentLength = arrRequest.Length
strmRequest = objRequest.GetRequestStream()
strmRequest.Write(arrRequest, 0, arrRequest.Length)
strmRequest.Close()
'**Obtengo la respuesta
objResponse = objRequest.GetResponse()
srResponse = New StreamReader(objResponse.GetResponseStream(),
System.Text.Encoding.ASCII)
Response.Write(srResponse.ReadToEnd())
srResponse.Close()
'-
//(EJEMPLO 2) C#.NET
string URLstring = "http://Sitio/pagina.asp";
WebClient myWebClient= new WebClient();
NameValueCollection miCol= new NameValueCollection();
StreamReader Archivo= new
StreamReader("C:\\File.txt",System.Text.Encoding.ASCII);
myWebClient.Headers.Add("enctype","multipart/form-data");
miCol.Add("user=",txtUser.text);
miCol.Add("password=", txtPassword.text);
miCol.Add("file=",Archivo.ReadToEnd());
byte[] bArray = myWebClient.UploadValues(URLstring, "POST", miCol);
Archivo.Close();
string sTr = Encoding.ASCII.GetString(bArray);
Console.Write(sTr);
Console.ReadLine();
//

Si intento enviar solo los datos (User y Password) no tengo ningun problema,
el tema es cuando quiero enviar conjunto a ellos el archivo adjunto, como si
lo hiciera
a traves de un form (haciendo Submit en forma manual).

he recorrido todos los libros ,foros y sitios de internet y no he encontardo
algo similar . Alguien me podria dar una ayudita por favor o acercarme algun
codigo similar estos dos ejemplos ???
desde ya muchas gracias

salu2
Marcelo

Preguntas similares