1 | XUSBSE2 ;FO-OAK/JLI-CONNECT WITH HTTP SERVER AND GET REPLY ;5/24/07 13:47
|
---|
2 | ;;8.0;KERNEL;**404,439**;Jul 10, 1995;Build 12
|
---|
3 | Q
|
---|
4 | ;
|
---|
5 | POST(SERVER,PORT,PAGE,DATA) ;
|
---|
6 | Q $$ENTRY(SERVER,$G(PORT),$G(PAGE),"POST",$G(DATA))
|
---|
7 | ;
|
---|
8 | GET(SERVER,PORT,PAGE) ;
|
---|
9 | Q $$ENTRY(SERVER,$G(PORT),$G(PAGE),"GET")
|
---|
10 | ;
|
---|
11 | ENTRY(SERVER,PORT,PAGE,HTTPTYPE,DATA) ;
|
---|
12 | N DONE,XVALUE,XWBICNT,XWBRBUF,XWBSBUF,XWBTDEV,XWBDEBUG,XWBOS,XWBT,XWBTIME,POP
|
---|
13 | N $ESTACK,$ETRAP S $ETRAP="D TRAP^XUSBSE2"
|
---|
14 | S PAGE=$G(PAGE,"/") I PAGE="" S PAGE="/"
|
---|
15 | S HTTPTYPE=$G(HTTPTYPE,"GET")
|
---|
16 | S DATA=$G(DATA),PORT=$G(PORT,80)
|
---|
17 | D SAVDEV^%ZISUTL("XUSBSE") ;S IO(0)=$P
|
---|
18 | D INIT^XWBTCPM
|
---|
19 | D OPEN^XWBTCPM2(SERVER,PORT)
|
---|
20 | I POP Q "DIDN'T OPEN CONNECTION"
|
---|
21 | S XWBSBUF=""
|
---|
22 | U XWBTDEV
|
---|
23 | D WRITE^XWBRW(HTTPTYPE_" "_PAGE_" HTTP/1.0"_$C(13,10))
|
---|
24 | I HTTPTYPE="POST" D
|
---|
25 | . D WRITE^XWBRW("Referer: http://"_$$KSP^XUPARAM("WHERE")_$C(13,10))
|
---|
26 | . D WRITE^XWBRW("Content-Type: application/x-www-form-urlencoded"_$C(13,10))
|
---|
27 | . D WRITE^XWBRW("Cache-Control: no-cache"_$C(13,10))
|
---|
28 | . D WRITE^XWBRW("Content-Length: "_$L(DATA)_$C(13,10,13,10))
|
---|
29 | . D WRITE^XWBRW(DATA)
|
---|
30 | D WRITE^XWBRW($C(13,10))
|
---|
31 | D WBF^XWBRW
|
---|
32 | S XWBRBUF="",DONE=0,XWBICNT=0
|
---|
33 | S XVALUE=$$DREAD($C(13,10)) I XVALUE'[200 S XVALUE=$P(XVALUE," ",2,3)
|
---|
34 | I '$T S XVALUE=$$DREAD($C(13,10,13,10)),XVALUE=$$DREAD($C(13,10))
|
---|
35 | D CLOSE ;I IO="|TCP|80" U IO D ^%ZISC
|
---|
36 | Q $P(XVALUE,$C(13,10))
|
---|
37 | ;
|
---|
38 | CLOSE ;
|
---|
39 | D CLOSE^%ZISTCP,GETDEV^%ZISUTL("XUSBSE") I $L(IO) U IO
|
---|
40 | Q
|
---|
41 | ;
|
---|
42 | DREAD(D,TO) ;Delimiter Read
|
---|
43 | N R,S,DONE,C,L
|
---|
44 | N $ES,$ET S $ET="S DONE=1,$EC="""" Q"
|
---|
45 | S R="",DONE=0,D=$G(D,$C(13)),C=0
|
---|
46 | S TO=$S($G(TO)>0:TO,$G(XWBTIME(1))>0:XWBTIME(1),1:60)/2+1
|
---|
47 | U XWBTDEV
|
---|
48 | F D Q:DONE
|
---|
49 | . S L=$F(XWBRBUF,D),L=$S(L>0:L,1:$L(XWBRBUF)+1),R=R_$E(XWBRBUF,1,L-1),XWBRBUF=$E(XWBRBUF,L,32000)
|
---|
50 | . I (R[D)!(C>TO) S DONE=1 Q
|
---|
51 | . R XWBRBUF:2 S:'$T C=C+1 S:$L(XWBRBUF) C=0
|
---|
52 | . I $G(XWBDEBUG)>2,$L(XWBRBUF) D LOG^XWBDLOG($E("rd ("_$L(XWBRBUF)_"): "_XWBRBUF,1,255))
|
---|
53 | . Q
|
---|
54 | Q R
|
---|
55 | ;
|
---|
56 | TRAP ;
|
---|
57 | I '(($EC["READ")!($EC["WRITE")) D ^%ZTER
|
---|
58 | D CLOSE,LOG^XWBDLOG("Error: "_$$EC^%ZOSV):$G(XWBDEBUG),UNWIND^%ZTER
|
---|
59 | Q
|
---|
60 | ;
|
---|
61 | ;Test code below here
|
---|
62 | ; MODIFY THE PROGRAM TO CHANGE THE 10.161.12.182 TO
|
---|
63 | ; IP ADDRESSES FOR THE WORKSTATION WITH THE BSE SAMPLE
|
---|
64 | ; SERVER
|
---|
65 | EN(ADDRESS) ; test with input address or 10.161.12.182 if none entered
|
---|
66 | N VALUE,PAGE,SERVER,PORT
|
---|
67 | S ADDRESS=$G(ADDRESS,"10.237.131.26")
|
---|
68 | S PAGE="/",SERVER=ADDRESS,PORT=80
|
---|
69 | I SERVER["/" D
|
---|
70 | . I SERVER["//" S SERVER=$P(SERVER,"//",2)
|
---|
71 | . I SERVER["/" S PAGE="/"_$P(SERVER,"/",2,99),SERVER=$P(SERVER,"/")
|
---|
72 | . I SERVER[":" S PORT=$P(SERVER,":",2),SERVER=$P(SERVER,":")
|
---|
73 | . Q
|
---|
74 | S VALUE=$$ENTRY(SERVER,PORT,PAGE) ; $G(ADDRESS,"10.237.131.26"))
|
---|
75 | D HOME^%ZIS ;I IO="|TCP|80" U IO D ^%ZISC
|
---|
76 | W !,VALUE
|
---|
77 | Q
|
---|
78 | ;
|
---|
79 | EN1 ;
|
---|
80 | D EN("10.237.131.26/page1.htm")
|
---|
81 | Q
|
---|
82 | ;
|
---|
83 | EN2 ;
|
---|
84 | D EN("10.237.131.26/level2/page2.htm")
|
---|
85 | Q
|
---|
86 | ;
|
---|
87 | ;
|
---|
88 | TESTPOST ;
|
---|
89 | W !,$$POST("10.237.131.26","/","xVAL=XWBHDL851-487411_0")
|
---|
90 | I IO="|TCP|80" U IO D ^%ZISC
|
---|
91 | Q
|
---|
92 | ;
|
---|
93 | ;Sample of what IIS returns
|
---|
94 | ;HTTP/1.1 200 OK
|
---|
95 | ;Server: Microsoft-IIS/5.1
|
---|
96 | ;Date: Mon, 12 Feb 2007 22:57:55 GMT
|
---|
97 | ;X-Powered-By: ASP.NET
|
---|
98 | ;X-AspNet-Version: 1.1.4322
|
---|
99 | ;Set-Cookie: ASP.NET_SessionId=vsiqfgygjwsaru55bj4aik45; path=/
|
---|
100 | ;Cache-Control: private
|
---|
101 | ;Content-Type: text/html; charset=utf-8
|
---|
102 | ;
|
---|
103 | ;999999999^MONSON,STEVE^CLEVELAND VAMC^541^136672^^
|
---|
104 | ;
|
---|