Tôi đang cố gắng gọi [webmethod] từ C#. Tôi có thể gọi webmethod đơn giản có tham số 'chuỗi'. Nhưng tôi có một webmethod mà mất trong một tham số 'byte []'. Tôi đang chạy vào '500 lỗi máy chủ nội bộ' khi tôi cố gọi nó. Đây là một số ví dụ về những gì tôi đang làm.Làm thế nào để sử dụng HttpWebRequest để gọi một hoạt động dịch vụ Web có tham số byte []?
phép nói rằng phương pháp của tôi là như thế này
[WebMethod]
public string TestMethod(string a)
{
return a;
}
tôi gọi nó như thế này sử dụng HttpRequest trong 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());
}
này hoạt động hoàn toàn tốt đẹp. Bây giờ tôi có một WebMethod được định nghĩa như thế này
[WebMethod]
public string UploadFile(byte[] data)
Tôi đã thử gọi nó như thế này
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);
Nhưng điều đó mang lại cho tôi một lỗi 500 nội :(
cho phép nói rằng tôi đã sử dụng C++ và HttpOpenRequest .. làm thế nào tôi sẽ làm điều đó sau đó? – shergill
Không chắc chắn trên đỉnh đầu của tôi :) –
Nếu mã trên hoạt động bạn có thể sử dụng Fiddler để xem cách yêu cầu http được xây dựng và sau đó sử dụng thông tin đó để mã tùy chỉnh của bạn hoạt động. –