2016-08-09 3 views
0

У меня есть .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); 

Любые мысли о том, что может быть пойдет не так или, как в дальнейшем устранить это?

+0

Все, что могло быть вызвано этим. Лучше всего отслеживать исключение, которое было брошено на службу API. –

+0

Но форма выглядит нормально и подходит? Первый раз, когда я занимаюсь C#, поэтому я надеюсь, что второй набор глаз может поймать тупую ошибку, которую я сделал. – Hanny

+0

Честно говоря, это будет быстрее преследовать ошибку на сервере. Есть хорошая вероятность, что всякое исключение будет брошено, и вы укажете на проблему. –

ответ

0

Я закончил разговор с нашими системными администраторами и убедился, что наш веб-каталог был настроен как приложение.

Затем я создал новое веб-приложение и добавил ссылку на службу, указывающую на API.

  • правой кнопкой мыши на References
  • Нажмите кнопку 'Добавить ссылку на службу'
  • Положить в API URL (к вашему .wsdl место)
  • Имя ваша справочная служба
  • Доступ это Programatically (т.е.: theService.SoapClient client = new theService.SoapClient();)

Затем выполните то, что вам нужно сделать с помощью методов, которые предоставляет API в документе References.cs справки об обслуживании!

Смежные вопросы