Hej. Sitter och leker lite med winsock kontrollen och postar värden från Nä... det skall väl fungera utan någon header... Hä ä ingen ASP me här. HTTP är stateless. du måste stänga förbindelsen efter varje färdig get. Har gjort en winsock.close också, för jag antog att det var så. Alltså direkt Det var mycket enkelt.<br>[LÖST] WinSock & HTTP-postning
en hemsida för att ta hand om dem i mitt VB-program.<br><br><br>
Jag får in hela HTTP-headern från den anropande klienten, den ser ut så här:<br><br>
GET /save?text1=value1&text2=value2&text3=value3 HTTP/1.1<br>
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, <br>application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*<br>
Accept-Language: sv<br>
Accept-Encoding: gzip, deflate<br>
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)<br>
Host: 10.0.0.20<br>
Connection: Keep-Alive<br>
<br>
<br>
mitt program som är lite exprimentkod i metoden Data_Arrival ser ut så här:<br>
<br>
<code>
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim inData As String
Winsock1.GetData inData, vbString, bytesTotal
Text1.Text = inData
Winsock1.SendData "Content-type: text/html" & vbCrLf & vbCrLf & vbCrLf
Winsock1.SendData "<html><body>"
Winsock1.SendData "Det Fungerade"
Winsock1.SendData "</body></html>"
End Sub
</code>
<br><br>
Problemet är att webläsaren (Internet Explorer) står och tuggar utan att
presentera texten Det Fungerade i fönstret. Såvitt jag kan se så returnerar
jag en giltig HTTP-header till klienten.<br><br>
Däremot när jag stoppar VB-programmet så poppar meddelandet fram/upp i webclienten. Så det verkar som om det är något som web-clienten
vill som jag inte lyckas ge den.<br><br>
Nån som har några ideér ???<br>
<br>
/[peter.h]<br>Sv: WinSock & HTTP-postning
Felet ligger väl i det COM obj som kommunicerar med ASP sidan....
mer kod. =)
// JompaSv: WinSock & HTTP-postning
Det är en ren VB-snurra på min kontorsburk. Sen är det en laptop
som sitter på samma nät som jag kör klienten på.
Jag tar emot http-postningen med winsocken och skickar en helt
vanlig http-header tillbaka som jag alltid gjort när jag programmerar
cgi-script i C.
Då läser man bara från standard in och sedan skickar man responsen
(headern) på standrad ut.
Där funkar det.
O det funkar uppenbarligen här också, det är bara det att det inte
fungerar förrän VB-snurran avbryts. Först då poppar resultatet fram på
klienten.
/[peter.h]Sv: WinSock & HTTP-postning
varje request = ny connection.Sv: WinSock & HTTP-postning
efter det att jag gjorde en winsock.senddata så gjorde jag en
winsock.close, men då fick klienten felet att sidan inte kunde nås.
Så det verkar isåfall som att man skall flusha stdout för att datat skall hinna
nå klienten innan man stänger ner kopplingen.
/[peter.h][LÖST] WinSock & HTTP-postning
<br>
<code>
Private Sub Winsock1_SendComplete()
Winsock1.Close
End Sub
</code>
<br>
<br>
/[peter.h]