J'essaie d'appeler un [webmethod] de C#. Je peux appeler webmethod simple qui accepte les paramètres 'string'. Mais j'ai une webmethod qui prend en paramètre 'byte []'. Je cours dans «500 erreur de serveur interne» quand j'essaye de l'appeler. Voici un exemple de ce que je fais.Comment utiliser HttpWebRequest pour appeler une opération de service Web qui prend un paramètre byte []?
Disons que ma méthode est comme ça
[WebMethod]
public string TestMethod(string a)
{
return a;
}
Je l'appelle comme cela en utilisant HTTPRequête 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());
}
Cela fonctionne parfaitement bien. Maintenant, j'ai une autre webmethod qui est défini comme celui-ci
[WebMethod]
public string UploadFile(byte[] data)
J'ai essayé d'appeler comme ça
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);
Mais cela me donne une erreur 500 interne :(
Disons que j'utilisais C++ et HttpOpenRequest .. comment pourrais-je faire alors? – shergill
Je ne suis pas sûr du haut de ma tête :) –
Si le code ci-dessus fonctionne, vous pouvez utiliser Fiddler pour voir comment la requête http est construite et ensuite utiliser cette information pour que votre code personnalisé fonctionne. –