Estoy tratando de llamar a [webmethod] desde C#. Puedo llamar a webmethod simple que tome los parámetros de 'cadena'. Pero tengo un método web que toma un parámetro 'byte []'. Me estoy quedando sin 'error de servidor interno 500' cuando intento llamarlo. Aquí hay un ejemplo de lo que estoy haciendo.Cómo usar HttpWebRequest para llamar a un servicio web Operación que toma un parámetro byte []?
permite decir mi método es como esto
[WebMethod]
public string TestMethod(string a)
{
return a;
}
lo llamo como esto utilizando HttpRequest en C#
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Credentials = CredentialCache.DefaultCredentials;
req.Method = "POST";
// Set the content type of the data being posted.
req.ContentType = "application/x-www-form-urlencoded";
string inputData = "sample webservice";
string postData = "a=" + inputData;
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] byte1 = encoding.GetBytes(postData);
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
StreamReader sr = new StreamReader(res.GetResponseStream());
string txtOutput = sr.ReadToEnd();
Console.WriteLine(sr.ReadToEnd());
}
Esto funciona perfectamente bien. Ahora tengo otra WebMethod que se define como esto
[WebMethod]
public string UploadFile(byte[] data)
Traté de llamar como este
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "data=abc";
byte[] sendBytes = encoding.GetBytes(postData);
req.ContentLength = sendBytes.Length;
Stream newStream = req.GetRequestStream();
newStream.Write(sendBytes, 0, sendBytes.Length);
Pero eso me da un error 500 interno :(
Digamos que yo estaba usando C++ y HttpOpenRequest .. ¿cómo iba a hacerlo, entonces? – shergill
No estoy seguro de la parte superior de mi cabeza :) –
Si el código anterior funciona, podría usar Fiddler para ver cómo se construye la solicitud http y luego usar esa información para que funcione su código personalizado. –