program
Project2;
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdIOHandler,
IdIOHandlerSocket, IdIOHandlerStack, IdSSL, IdSSLOpenSSL, IdHTTP,
StdCtrls, xmldom, XMLIntf, msxmldom, XMLDoc;
type
soaper =
class
private
XMLDocument1: TXMLDocument;
XMLString :
AnsiString
;
lService :
AnsiString
;
ResponseStream: TMemoryStream;
InputStringList : TStringList;
RootNode: IXMLNode;
public
furl:
string
;
fileIN:
AnsiString
;
constructor
Create;
function
servicestate():
string
;
end
;
constructor
soaper
.
Create;
begin
furl:=
''
;
fileIN:=
''
;
end
;
function
soaper
.
servicestate ():
string
;
var
IdHTTP1: TIdHTTP;
SSL: TIdSSLIOHandlerSocketOpenSSL;
strok:
string
;
begin
IdHTTP1 := TIdHTTP
.
Create(
nil
);
idhttp1
.
HTTPOptions:=[];
SSL := TIdSSLIOHandlerSocketOpenSSL
.
Create(IdHTTP1);
ResponseStream := TMemoryStream
.
Create;
InputStringList := TStringList
.
Create;
IdHttp1
.
IOHandler:=SSL;
XMLString := fileIN;
lService :=
'imessage_send'
;
InputStringList
.
Add(XMLString);
try
IdHttp1
.
Request
.
Accept :=
'*/*'
;
IdHttp1
.
Request
.
ContentType :=
'text/XML'
;
IdHTTP1
.
Post(furl, InputStringList, ResponseStream);
responsestream
.
SaveToFile(
'd:\1_adv.xml'
);
finally
XMLDocument1
.
LoadFromStream(responsestream);
XMLDocument1
.
Active :=
true
;
RootNode := XMLDocument1
.
DocumentElement;
strok:=RootNode
.
ChildNodes[
'SOAP-ENV:Body'
].ChildNodes[
0
].ChildNodes[
0
].ChildNodes[
5
].ChildNodes[
1
].ChildNodes[
0
].text+
' '
+RootNode
.
ChildNodes[
'SOAP-ENV:Body'
].ChildNodes[
0
].ChildNodes[
0
].ChildNodes[
0
].ChildNodes[
1
].ChildNodes[
0
].text+
' ñîñòîÿíèå ñåðâèñà '
+RootNode
.
ChildNodes[
'SOAP-ENV:Body'
].ChildNodes[
0
].ChildNodes[
0
].ChildNodes[
7
].ChildNodes[
1
].ChildNodes[
0
].text+
' '
+RootNode
.
ChildNodes[
'SOAP-ENV:Body'
].ChildNodes[
0
].ChildNodes[
0
].ChildNodes[
4
].ChildNodes[
1
].ChildNodes[
0
].text;
ResponseStream
.
Free;
InputStringList
.
Free;
end
;
idhttp1
.
Free;
result:=strok;
end
;
Function
GetFile(
const
FileName :
AnsiString
) :
AnsiString
;
Var
F :
File
;
FSize :
Longint
;
begin
Result:=
''
;
if
not
FileExists(FileName)
then
Exit;
FileMode:=
0
;
AssignFile ( F, FileName);
Reset(F,
1
);
FSize:=FileSize(F);
SetLength(Result,FSize);
BlockRead(F, Result[
1
],FSize);
CloseFile(F);
FileMode:=
2
;
end
;
var
cl:soaper;
t:
string
;
begin
cl:=soaper
.
Create;
cl
.
fileIN:= GetFile(
'servst1.xml'
);
t:=cl
.
servicestate();
showmessage(t);
end
.