support test page using POST request
[mono.git] / data / net_2_0 / DefaultWsdlHelpGenerator.aspx
index 8324d417359c54997a95954ba1d0f97829dc7331..0b02fb5de572d5004ff0e4b0f15abad5f77dbdd6 100644 (file)
@@ -16,6 +16,7 @@
 <%@ Import Namespace="System.Xml.Schema" %>
 <%@ Import Namespace="System.Web.Services" %>
 <%@ Import Namespace="System.Web.Services.Description" %>
+<%@ Import Namespace="System.Web.Services.Configuration" %>
 <%@ Import Namespace="System" %>
 <%@ Import Namespace="System.Net" %>
 <%@ Import Namespace="System.Globalization" %>
@@ -25,7 +26,9 @@
 <%@ Import Namespace="System.CodeDom.Compiler" %>
 <%@ Import Namespace="Microsoft.CSharp" %>
 <%@ Import Namespace="Microsoft.VisualBasic" %>
+<%@ Import Namespace="System.Text" %>
 <%@ Import Namespace="System.Text.RegularExpressions" %>
+<%@ Import Namespace="System.Security.Cryptography.X509Certificates" %>
 <%@ Assembly name="System.Web.Services" %>
 <%@ Page debug="true" %>
 
@@ -88,7 +91,7 @@ void Page_Load(object sender, EventArgs e)
        Page.DataBind();
        
        ProfileViolations = new BasicProfileViolationCollection ();
-       WebServicesInteroperability.CheckConformance (WsiClaims.BP10, descriptions, ProfileViolations);
+       WebServicesInteroperability.CheckConformance (WsiProfiles.BasicProfile1_1, descriptions, ProfileViolations);
 }
 
 void BuildOperationInfo ()
@@ -122,7 +125,10 @@ void BuildOperationInfo ()
                CurrentOperationProtocols += (string) prots[n];
        }
        
-       CurrentOperationSupportsTest = prots.Contains ("HttpGet") || prots.Contains ("HttpPost");
+       WebServiceProtocols testProtocols = WebServiceProtocols.HttpGet | WebServiceProtocols.HttpPost;
+       if (Context.Request.IsLocal)
+           testProtocols |= WebServiceProtocols.HttpPostLocalhost;
+       CurrentOperationSupportsTest = (WebServicesSection.Current.EnabledProtocols & testProtocols) != 0;
 
        // Operation format
        OperationBinding obin = FindOperation (binding, CurrentOperationName);
@@ -313,6 +319,13 @@ bool HasFormResult
        get { return Request.QueryString ["ext"] == "testform"; }
 }
 
+class NoCheckCertificatePolicy : ICertificatePolicy {
+       public bool CheckValidationResult (ServicePoint a, X509Certificate b, WebRequest c, int d)
+       {
+               return true;
+       }
+}
+
 string GetTestResult ()
 { 
        if (!HasFormResult) return null;
@@ -346,7 +359,21 @@ string GetTestResult ()
        {
                string url = location + "/" + CurrentOperationName;
                Uri uri = new Uri (url);
-               WebRequest req = WebRequest.Create (url + "?" + qs);
+               WebRequest req;
+               if (CurrentOperationProtocols.IndexOf ("HttpGet") < 0) {
+                   req = WebRequest.Create (url);
+                   req.Method="POST";
+                   if (!String.IsNullOrEmpty (qs)) {
+                       byte [] postBuffer = Encoding.UTF8.GetBytes (qs);
+                       req.ContentLength = postBuffer.Length;
+                       using (Stream requestStream = req.GetRequestStream())
+                           requestStream.Write (postBuffer, 0, postBuffer.Length);
+                   }
+               }
+               else
+                   req = WebRequest.Create (url + "?" + qs);
+               if (url.StartsWith ("https:"))
+                       ServicePointManager.CertificatePolicy = new NoCheckCertificatePolicy ();
                HttpCookieCollection cookies = Request.Cookies;
                int last = cookies.Count;
                if (last > 0) {
@@ -1593,7 +1620,7 @@ function clearForm ()
                        <span class="bindingLabel"><%#FormatBindingName(DataBinder.Eval(Container.DataItem, "Name").ToString())%></span>
                        <asp:repeater id="OperationsRepeater" runat=server datasource='<%# ((Binding)Container.DataItem).Operations %>'>
                                <itemtemplate>
-                                       <a class="method" href="<%#PageName%>?<%#GetTabContext("op",null)%>op=<%#GetOpName(Container.DataItem)%>&bnd=<%#DataBinder.Eval(Container.DataItem, "Binding.Name")%>"><%#GetOpName(Container.DataItem)%></a>
+                                       <a class="method" href="<%=PageName%>?<%=GetTabContext("op",null)%>op=<%#GetOpName(Container.DataItem)%>&bnd=<%#DataBinder.Eval(Container.DataItem, "Binding.Name")%>"><%#GetOpName(Container.DataItem)%></a>
                                        <div class="smallSeparator"></div>
                                </itemtemplate>
                        </asp:repeater>
@@ -1611,11 +1638,11 @@ function clearForm ()
 -->
 
        <p class="label">Web Service Overview</p>
-       <%#WebServiceDescription%>
+       <%=WebServiceDescription%>
        <br/><br/>
        <% if (ProfileViolations.Count > 0) { %>
                <p class="label">Basic Profile Conformance</p>
-               This web service does not conform to WS-I Basic Profile v1.0
+               This web service does not conform to WS-I Basic Profile v1.1
        <%
                Response.Write ("<ul>");
                foreach (BasicProfileViolation vio in ProfileViolations) {
@@ -1638,7 +1665,7 @@ This service does not contain any public web method.
        Operation description
 -->
 
-       <span class="operationTitle"><%#CurrentOperationName%></span>
+       <span class="operationTitle"><%=CurrentOperationName%></span>
        <br><br>
        <% WriteTabs (); %>
        <br><br><br>
@@ -1680,12 +1707,12 @@ This service does not contain any public web method.
                
                <span class="label">Remarks</span>
                <div class="smallSeparator"></div>
-               <%#OperationDocumentation%>
+               <%=OperationDocumentation%>
                <br><br>
                <span class="label">Technical information</span>
                <div class="smallSeparator"></div>
-               Format: <%#CurrentOperationFormat%>
-               <br>Supported protocols: <%#CurrentOperationProtocols%>
+               Format: <%=CurrentOperationFormat%>
+               <br>Supported protocols: <%=CurrentOperationProtocols%>
        <% } %>
        
 <!--
@@ -1696,11 +1723,11 @@ This service does not contain any public web method.
        <% if (CurrentTab == "test") { 
                if (CurrentOperationSupportsTest) {%>
                        Enter values for the parameters and click the 'Invoke' button to test this method:<br><br>
-                       <form action="<%#PageName%>" method="GET">
-                       <input type="hidden" name="page" value="<%#CurrentPage%>">
-                       <input type="hidden" name="tab" value="<%#CurrentTab%>">
-                       <input type="hidden" name="op" value="<%#CurrentOperationName%>">
-                       <input type="hidden" name="bnd" value="<%#CurrentOperationBinding%>">
+                       <form action="<%=PageName%>" method="GET">
+                       <input type="hidden" name="page" value="<%=CurrentPage%>">
+                       <input type="hidden" name="tab" value="<%=CurrentTab%>">
+                       <input type="hidden" name="op" value="<%=CurrentOperationName%>">
+                       <input type="hidden" name="bnd" value="<%=CurrentOperationBinding%>">
                        <input type="hidden" name="ext" value="testform">
                        <table class="paramFormTable" cellspacing="0" cellpadding="3">
                        <asp:repeater id="InputFormParamsRepeater" runat=server>
@@ -1714,9 +1741,9 @@ This service does not contain any public web method.
                        <tr><td></td><td><input class="button" type="submit" value="Invoke">&nbsp;<input class="button" type="button" onclick="clearForm()" value="Clear"></td></tr>
                        </table>
                        </form>
-                       <div id="testFormResult" style="display:<%# (HasFormResult?"block":"none") %>">
+                       <div id="testFormResult" style="display:<%= (HasFormResult?"block":"none") %>">
                        The web service returned the following result:<br/><br/>
-                       <div class="codePanel"><%#GetTestResult()%></div>
+                       <div class="codePanel"><%=GetTestResult()%></div>
                        </div>
                <% } else {%>
                The test form is not available for this operation because it has parameters with a complex structure.
@@ -1736,25 +1763,25 @@ This service does not contain any public web method.
                <% if (IsOperationSupported ("Soap")) { %>
                        <span class="label">Soap</span>
                        <br/><br/>
-                       <div class="codePanel"><div class="code-xml"><%#GenerateOperationMessages ("Soap", true)%></div></div>
+                       <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", true)%></div></div>
                        <br/>
-                       <div class="codePanel"><div class="code-xml"><%#GenerateOperationMessages ("Soap", false)%></div></div>
+                       <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("Soap", false)%></div></div>
                        <br/>
                <% } %>
                <% if (IsOperationSupported ("HttpGet")) { %>
                        <span class="label">HTTP Get</span>
                        <br/><br/>
-                       <div class="codePanel"><div class="code-xml"><%#GenerateOperationMessages ("HttpGet", true)%></div></div>
+                       <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", true)%></div></div>
                        <br/>
-                       <div class="codePanel"><div class="code-xml"><%#GenerateOperationMessages ("HttpGet", false)%></div></div>
+                       <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpGet", false)%></div></div>
                        <br/>
                <% } %>
                <% if (IsOperationSupported ("HttpPost")) { %>
                        <span class="label">HTTP Post</span>
                        <br/><br/>
-                       <div class="codePanel"><div class="code-xml"><%#GenerateOperationMessages ("HttpPost", true)%></div></div>
+                       <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", true)%></div></div>
                        <br/>
-                       <div class="codePanel"><div class="code-xml"><%#GenerateOperationMessages ("HttpPost", false)%></div></div>
+                       <div class="codePanel"><div class="code-xml"><%=GenerateOperationMessages ("HttpPost", false)%></div></div>
                        <br/>
                <% } %>
                
@@ -1764,21 +1791,21 @@ This service does not contain any public web method.
        **********************************************************
        Client Proxy
 -->
-       <form action="<%#PageName%>" name="langForm" method="GET">
+       <form action="<%=PageName%>" name="langForm" method="GET">
                Select the language for which you want to generate a proxy 
-               <input type="hidden" name="page" value="<%#CurrentPage%>">&nbsp;
+               <input type="hidden" name="page" value="<%=CurrentPage%>">&nbsp;
                <SELECT name="lang" onchange="langForm.submit()">
-                       <%#GetOptionSel("cs",CurrentLanguage)%>C#</option>
-                       <%#GetOptionSel("vb",CurrentLanguage)%>Visual Basic</option>
+                       <%=GetOptionSel("cs",CurrentLanguage)%>C#</option>
+                       <%=GetOptionSel("vb",CurrentLanguage)%>Visual Basic</option>
                </SELECT>
                &nbsp;&nbsp;
        </form>
        <br>
-       <span class="label"><%#CurrentProxytName%></span>&nbsp;&nbsp;&nbsp;
-       <a href="<%#PageName + "?code=" + CurrentLanguage%>">Download</a>
+       <span class="label"><%=CurrentProxytName%></span>&nbsp;&nbsp;&nbsp;
+       <a href="<%=PageName + "?code=" + CurrentLanguage%>">Download</a>
        <br><br>
        <div class="codePanel">
-       <div class="code-<%#CurrentLanguage%>"><%#GetProxyCode ()%></div>
+       <div class="code-<%=CurrentLanguage%>"><%=GetProxyCode ()%></div>
        </div>
 <%} else if (CurrentPage == "wsdl") {%>
 <!--
@@ -1800,18 +1827,18 @@ This service does not contain any public web method.
        <%} else {%>
        <%}%>
        <br>
-       <span class="label"><%#CurrentDocumentName%></span>&nbsp;&nbsp;&nbsp;
+       <span class="label"><%=CurrentDocumentName%></span>&nbsp;&nbsp;&nbsp;
        <a href="<%=PageName + "?" + CurrentDocType + "=" + CurrentDocInd %>">Download</a>
        <br><br>
        <div class="codePanel">
-       <div class="code-xml"><%#GenerateDocument ()%></div>
+       <div class="code-xml"><%=GenerateDocument ()%></div>
        </div>
 
 <%}%>
 
 <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
 </td>
-<td withd="20px"></td>
+<td width="20px"></td>
 </tr>
 
 </table>