2016-08-09 15 views
0

APIサービス(内部的にサーバー上でホストされている)を呼び出そうとしている.aspxファイルがあります。ドキュメント内のC#からのSOAP要求

私は同じファイル内からこれをしようとしています(何もありません) - これは可能ですか?ここで

が私の.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#を最初に扱う - 私は目の2番目のセットが私が作ったばかげたミスをキャッチする可能性があるので、私は期待しています。 – Hanny

+0

正直言って、サーバー上のエラーをより迅速に追跡することになります。どんな例外がスローされても、あなたが問題を正しく指摘するという良いチャンスがあります。 –

答えて

0

システム管理者と話し合い、Webディレクトリがアプリケーションとして設定されていることを確認しました。

次に、新しいWebアプリケーションを作成し、APIを指すサービス参照を追加しました。右クリックは、それが(プログラム的に(自分の.wsdlの場所に)

  • 名前あなたのサービス参照
  • アクセス を
  • あなた APIのURLに入れて 'サービス参照の追加' を参照
  • をクリック

    • すなわち、Service.SoapClientクライアント=新しい Service.SoapClient();

    次に、サービスリファレンスのReferences.csドキュメントでAPIが提供する方法で必要なことを実行してください!

  • 関連する問題