-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program..cs
107 lines (88 loc) · 3.55 KB
/
Program..cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*
Program: Query data from AspenTech InfoPlus.21 using the SQLplus Web
Service.
Language: C#
*/
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Xml;
using System.Xml.Linq;
namespace QueryAspenIP21
{
class Program
{
static void Main(string[] args)
{
// Replace [HOST_NAME] below with the details of your
// IP.21 server
const string webSvc = "http://[HOST_NAME]"
+ "/SQLPlusWebService/SQLplusWebService.asmx";
const string soap12Req =
"<?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>"
+ "<ExecuteSQL xmlns="
+ "\"http://www.aspentech.com/SQLplus.WebService\">"
+ "<command>{0}</command>"
+ "</ExecuteSQL>"
+ "</soap12:Body>"
+ "</soap12:Envelope>";
// Build the SQL query string
const string sqlCmd = "SELECT NAME, IP_DESCRIPTION, "
+ "IP_INPUT_VALUE, IP_INPUT_TIME FROM IP_AnalogDef "
+ "WHERE NAME = 'ATCAI'";
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(
webSvc);
// Set credentials if needed
webReq.Credentials = CredentialCache.DefaultCredentials;
webReq.ContentType = "application/soap+xml; charset=utf-8";
webReq.Method = "POST";
XmlDocument soapEnvDoc;
soapEnvDoc = new XmlDocument();
soapEnvDoc.LoadXml(string.Format(soap12Req, sqlCmd));
byte[] bytes;
bytes = Encoding.UTF8.GetBytes(soapEnvDoc.OuterXml);
webReq.ContentLength = bytes.Length;
using (Stream stream = webReq.GetRequestStream())
{
stream.Write(bytes, 0, bytes.Length);
}
HttpWebResponse webRes = (HttpWebResponse)webReq.
GetResponse();
Stream dataStream = webRes.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
XmlDocument soapResXml = new XmlDocument();
soapResXml.Load(reader);
// Decode encoded values in the XML string
soapResXml.InnerXml = HttpUtility.HtmlDecode(
soapResXml.InnerXml);
// Use LINQ for format XML for print
XDocument beautifulXml = XDocument.Parse(soapResXml.InnerXml);
soapResXml.InnerXml = beautifulXml.ToString();
// Build the file path to write
string filePath = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().Location) +
"\\response.xml";
using(StreamWriter stream = new StreamWriter(filePath, false,
Encoding.GetEncoding("iso-8859-7")))
{
soapResXml.Save(stream);
}
// Clean up
reader.Close();
dataStream.Close();
webRes.Close();
}
}
}