5 Stimmen

Wie HttpWebRequest verwenden, um eine Web Service Operation aufzurufen, die in einem Byte[] Parameter nimmt?

Ich versuche, eine [webmethod] von C# aufrufen. Ich kann einfache Webmethods aufrufen, die 'String'-Parameter aufnehmen. Aber ich habe eine Webmethode, die in einem 'byte[]' Parameter nimmt. Wenn ich versuche, sie aufzurufen, erhalte ich die Meldung "500 internal server error". Hier ist ein Beispiel dafür, was ich tue.

Sagen wir, meine Methode sieht folgendermaßen aus

[WebMethod]
public string TestMethod(string a)
{
    return a;
}

Ich rufe es wie folgt mit HttpRequest in 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());
            }

Das funktioniert einwandfrei. Jetzt habe ich eine weitere Webmethode, die wie folgt definiert ist

[WebMethod]
public string UploadFile(byte[] data)

Ich habe versucht, sie wie folgt aufzurufen

            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);

Aber das gibt mir einen internen Fehler 500 :(

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X