У меня есть .aspx-файл, который я пытаюсь выполнить для службы API (размещен на наших серверах внутри).Запрос SOAP из документа C#
Я пытаюсь сделать это из одного файла (ничего за кулисами) - это возможно?
Вот мой .aspx файл:
<%@ Language="C#" debug="true"%>
<HTML>
<script runat="server" language="C#">
public void Page_Load(object sender, EventArgs e)
{
//setup Request
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)
System.Net.HttpWebRequest.Create("https://my.fully.qualified.server/EMSAPI/");
//format our SOAP request
string strRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap12:Envelope" +
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"" +
" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"" +
" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">" +
"<soap12:Body>" +
"<GetAllBookings xmlns=\"http://DEA.API.WEB.SERVICE/\">" +
"<UserName>username</UserName>" +
"<Password>password</Password>" +
"<StartDate>"+
"2016-08-08T00:00:00.000"+
"</StartDate>" +
"<EndDate>"+
"2016-08-09T00:00:00.000"+
"</EndDate>" +
"<BuildingID>36</BuildingID>" +
"<ViewComboRoomComponents>false</ViewComboRoomComponents>" +
"</GetAllBookings>" +
"</soap12:Body>" +
"</soap12:Envelope>";
//String xmlString = strRequest;
System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] bytesToWrite = encoding.GetBytes(strRequest);
request.Method = "POST";
request.ContentLength = bytesToWrite.Length;
request.Headers.Add("SOAPAction: \"https://my.fully.qualified.server/EMSAPI/\"");
request.ContentType = "application/soap+xml; charset=utf-8";
System.IO.Stream newStream = request.GetRequestStream();
newStream.Write(bytesToWrite, 0, bytesToWrite.Length);
newStream.Close();
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream dataStream = response.GetResponseStream();
System.IO.StreamReader reader = new System.IO.StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
}
</script>
<body>
</body>
</HTML>
Я получаю следующее сообщение об ошибке:
Exception Details: System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
Source Error:
Line 58: newStream.Close();
Line 59:
(THIS IS BOLDED) Line 60: System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
Line 61: System.IO.Stream dataStream = response.GetResponseStream();
Line 62: System.IO.StreamReader reader = new System.IO.StreamReader(dataStream);
Любые мысли о том, что может быть пойдет не так или, как в дальнейшем устранить это?
Все, что могло быть вызвано этим. Лучше всего отслеживать исключение, которое было брошено на службу API. –
Но форма выглядит нормально и подходит? Первый раз, когда я занимаюсь C#, поэтому я надеюсь, что второй набор глаз может поймать тупую ошибку, которую я сделал. – Hanny
Честно говоря, это будет быстрее преследовать ошибку на сервере. Есть хорошая вероятность, что всякое исключение будет брошено, и вы укажете на проблему. –