В настоящее время я пишу веб-сервис на C #, который имеет несколько методов, один из которых должен получать запросы HTTP POST.Первое, что я сделал, изменил файл web.config в проекте веб-службы, как показано ниже.
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpPostLocalhost"/>
<add name="Documentation"/>
</protocols>
</webServices>
Я могу запустить веб-службу локально, и когда я нажимаю на метод в браузере, я могусмотрите, он обрабатывает HTTP-запросы POST и принимает args = string, так как моя сигнатура веб-метода принимает один строковый параметр с именем args.Затем я тестирую это через тестовое приложение ASP.NET, используя приведенный ниже код для запуска HTTP-запроса POST.
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ConfigurationManager.AppSettings["PaymentHubURL"].ToString());
request.KeepAlive = false;
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
StringBuilder sb = new StringBuilder();
sb.Append("message_type=");
sb.Append(HttpUtility.UrlEncode("Txn_Response"));
byte[] bytes = UTF8Encoding.UTF8.GetBytes(sb.ToString());
request.ContentLength = bytes.Length;
using (Stream postStream = request.GetRequestStream())
{
postStream.Write(bytes, 0, bytes.Length);
}
string test;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
StreamReader reader = new StreamReader(response.GetResponseStream());
test = reader.ReadToEnd();
}
Но когда я запускаю это, я получаю "Удаленный сервер вернул ошибку: (500)Внутренняя ошибка сервера".Если я удаляю параметр, удаляя stringbuilder и байт-код, а также не имея параметров в веб-сервисе, он работает.Так что это, очевидно, проблема с параметрами.Я на самом деле хочу отправить больше данных и использовал параметр string [] в веб-сервисе, но это также не удалось.
Может кто-нибудь помочь ??