private void button1_Click(object sender, EventArgs e) { Logger.Text = ""; XmlTextReader xmlr = null; System.Web.Services.Description.ServiceDescription servdesc = null; System.Web.Services.Description.PortTypeCollection ports = null; System.Web.Services.Description.OperationCollection ops = null; try { xmlr = new XmlTextReader(urltext.Text); xmlr.WhitespaceHandling = WhitespaceHandling.None; servdesc = System.Web.Services.Description.ServiceDescription.Read(xmlr); ports = servdesc.PortTypes; Logger.Text += " *** Found " + ports.Count + " portType(s) *** \r\n"; for (int j = 0; j < ports.Count; j++) { ops = ports[j].Operations; Logger.Text += " --- Found " + ops.Count + " operation(s) in : " + (j + 1) + " ---\r\n"; for (int i = 0; i < ops.Count; i++) { Logger.Text += ops[i].Name + "->" + "\r\n"; System.Web.Services.Description.OperationMessageCollection iter = ops[i].Messages; //Message msgiter = null; for (int k = 0; k < iter.Count; k++) { Logger.Text += iter[k].Message.Name + "\r\n"; } } } /* * while (xmlr.Read()) * { * switch (xmlr.NodeType) * { * case XmlNodeType.Element: * * Logger.Text += xmlr.Name + "->" + xmlr.R + "\r\n"; * break; * case XmlNodeType.EndElement: * break; * default: * break; * } * } */ } catch (XmlException xe) { Logger.Text += xe.ToString(); } finally { if (xmlr != null) { xmlr.Close(); } } }
private void button1_Click(object sender, EventArgs e) { Logger.Text = ""; XmlTextReader xmlr = null; System.Web.Services.Description.ServiceDescription servdesc = null; System.Web.Services.Description.PortTypeCollection ports = null; System.Web.Services.Description.OperationCollection ops = null; System.Xml.Serialization.XmlSchemas schemas = null; for (int i = 0; i < httpheaderlist.Items.Count; i++) { httpheaderlist.Items.RemoveAt(i); } if (!urltext.Text.StartsWith("http")) { MessageBox.Show("Please enter a URL starting with http"); return; } if (urltext.Text.IndexOf("://") == -1) { MessageBox.Show("Did you forget the protocol like http:// or https:// ?" + "\r\n E.g., http://soap.amazon.com/schemas2/AmazonWebServices.wsdl"); return; } try { xmlr = new XmlTextReader(urltext.Text); xmlr.WhitespaceHandling = WhitespaceHandling.None; servdesc = System.Web.Services.Description.ServiceDescription.Read(xmlr); schemas = servdesc.Types.Schemas; Logger.Text += "=== Found " + schemas.Count + " schema(s)===\r\n"; for (int k = 0; k < schemas.Count; k++) { XmlSchemaObjectCollection xmlelem = schemas[k].Items; XmlSchemaObjectEnumerator enumerator = xmlelem.GetEnumerator(); while (enumerator.MoveNext()) { if (enumerator.Current is XmlSchemaElement) { XmlSchemaElement xse = (XmlSchemaElement)enumerator.Current; Logger.Text += xse.Name + '=' + xse.SchemaType + ", "; TraverseParticle(xse); } else { if (enumerator.Current is XmlSchemaComplexType) { XmlSchemaComplexType xsct = (XmlSchemaComplexType)enumerator.Current; Logger.Text += '\'' + xsct.Name + ": "; TraverseParticle(xsct.Particle); if (xsct.ContentModel is XmlSchemaSimpleContent) { Logger.Text += "Simple; "; } else { //XmlSchemaComplexContent complexContent = (XmlSchemaComplexContent)xsct.ContentModel; if (xsct.ContentModel is XmlSchemaComplexContent) { Logger.Text += "Complex; "; } } Logger.Text += "\',"; } } } Logger.Text += "\r\n"; } ports = servdesc.PortTypes; Logger.Text += " *** Found " + ports.Count + " portType(s) *** \r\n"; TreeNode tn = null; TreeNode msgNode = null; TreeNode root = new TreeNode(urltext.Text); treeView1.Nodes.Add(root); for (int j = 0; j < ports.Count; j++) { ops = ports[j].Operations; Logger.Text += " --- Found " + ops.Count + " operation(s) in : " + (j + 1) + " ---\r\n"; for (int i = 0; i < ops.Count; i++) { Logger.Text += ops[i].Name + "->" + "\r\n"; tn = new TreeNode(ops[i].Name); root.Nodes.Add(tn); System.Web.Services.Description.OperationMessageCollection iter = ops[i].Messages; //Message msgiter = null; for (int k = 0; k < iter.Count; k++) { Logger.Text += iter[k].Message.Name + "\r\n"; msgNode = new TreeNode(iter[k].Message.Name); tn.Nodes.Add(msgNode); } } } GenerateSOAP(); /* * while (xmlr.Read()) * { * switch (xmlr.NodeType) * { * case XmlNodeType.Element: * * Logger.Text += xmlr.Name + "->" + xmlr.R + "\r\n"; * break; * case XmlNodeType.EndElement: * break; * default: * break; * } * } */ } catch (XmlException xe) { Logger.Text += xe.StackTrace; } catch (Exception ex) { Logger.Text += ex.StackTrace; } finally { if (xmlr != null) { xmlr.Close(); } } }