Как получить post-запрос, содержащий XML, из другого приложения с помощью ASP.NET REST api
Я пытаюсь написать REST webservice api, который будет извлекать xml-данные из post-запроса в другом приложении.
Что я уже пробовал:
запрос post:
protected void Button1_Click(object sender, EventArgs e) { string xmlMessage = "<?xml version=\"1.0\" encoding=\"UTF - 8\" ?>< PaymentNotification >< SessionID > 000001100913103301000000000001 </ SessionID > < RequestorID > 0000000001 </ RequestorID > < PayerPhoneNumber > 08060000000 </ PayerPhoneNumber > </ PaymentNotification >\r\n"; // "construct your xml request message as required by that method along with parameters"; string url = "http://localhost:8921/api/billpayment"; postXMLData(url, xmlMessage); } public void postXMLData(string destinationUrl, string requestXml) { byte[] bytes = System.Text.Encoding.ASCII.GetBytes(requestXml); var req = (HttpWebRequest)WebRequest.Create(destinationUrl); req.ContentType = "text/xml"; req.Method = "POST"; req.ContentLength = bytes.Length; using (Stream os = req.GetRequestStream()) { os.Write(bytes, 0, bytes.Length); } string response = ""; using (WebResponse resp = req.GetResponse()) { using (StreamReader sr = new StreamReader(resp.GetResponseStream())) { response = sr.ReadToEnd().Trim(); } } }
запрос get:
public class BillPaymentController : ApiController { private const string URL = "http://localhost:8921/api/billpayment"; private string urlParameters = "?api_key={55EB9B66-7B89-4FB2-AE6B-6FEAA78AC10C}"; // POST api/billpayment // POST api/values public string GetRequest([FromBody]string value) { HttpClient client = new HttpClient(); client.BaseAddress = new Uri(URL); // Add an Accept header for JSON format. client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/xml")); // List data response. HttpResponseMessage response = client.GetAsync(urlParameters).Result; // Blocking call! if (response.IsSuccessStatusCode) { // Parse the response body. Blocking! var dataObjects = response.Content.ReadAsAsync<IEnumerable<BillPaymentClass>>().Result; foreach (var d in dataObjects) { Console.WriteLine("{0}", d.MerchantName); } } else { Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase); } return ""; } }
Но у меня есть эта ошибка:
Удаленный сервер вернул ошибку: (405) метод не разрешен для метода Post Request, а также Get-запрос не работает. пытался это исправить, но пока не повезло, любая помощь будет оценена по достоинству