Sida 1 av 1

VB6 och HTML

Postat: 15 oktober 2016, 20:15:09
av RadioDJ
Har nu suttit har för länge och inte knäckt ett problem.
Hoppas att någon här kan hjälpa mig.
Jag har byggt en Arduino enhet som ligger på nätverket och lyssnar på anrop för att sedan dra lite reläer.
I Arduino använder jag SPI.h och UIPEthernet.h
Tror inte felet ligger här.

Om jag använder en webläsare så fungerar allt som det ska.
Jag har sedan skrivit ett program i Visual Basic 6 som jag vill ska göra samma sak. Men detta får jag inte att fungera. Blir inte klok på vad jag gjort för fel.

Hoppas någon kan hjälpa mig med vad som jag saknar.

Här kommer det som jag gjort i VB:
Jag har bantat ner koden lite men tror att allt det viktiga kom med.

Kod: Markera allt

Global g_blnConnected as Boolean


Public Sub SendToURLrelay()
Dim strHTTP As String
    
  On Error Resume Next
  
  If g_blnConnected Then Exit Sub
 
' Configure winsock
  Winsocket.Protocol = sckTCPProtocol
  Winsocket.RemoteHost = "192.168.0.239"
  Winsocket.RemotePort = "80"
      
  strHTTP = "GET /?relay1=1 HTTP/1.0" & vbCrLf
  strHTTP = strHTTP & "Host: 192.168.0.239 & vbCrLf
  strHTTP = strHTTP & vbNewLine & vbNewLine

  Winsocket.Connect
    
' Wait for a connection
  While Not g_blnConnected
    DoEvents
  Wend
    
' Send the HTTP request
  Winsocket.SendData strHTTP
  
  If g_blnConnected = True Then
    Winsocket.close
    g_blnConnected = False
  End If
End Sub


Private Sub Winsocket_Connect()
  g_blnConnected = True
End Sub

Re: VB6 och HTML

Postat: 15 oktober 2016, 20:19:11
av ensten
1) VAD är det som inte funkar?
2) "On Error Resume Next" är inge bra om man ska felsöka ...

Re: VB6 och HTML

Postat: 15 oktober 2016, 20:54:20
av RadioDJ
Det blir inget fel i VB koden.
Har fångat upp alla eventuella fel som bildas i rutinen, men det blir inga.
Det är troligen något med strängen som skickas ut på nätverket.

Re: VB6 och HTML

Postat: 15 oktober 2016, 20:58:14
av Mr Andersson
Ett tips är att ladda ner fiddler eller wireshark och se vad som skiljer mellan browsern och ditt program.
Men några saker är
  • Det ska vara en tom rad efter headers, inte två. Vissa servrar är känsliga för sånt. Dessutom måste det vara CRLF.
  • Host: finns inte i HTTP 1.0
  • Du kollar aldrig svar från servern. Förmodligen får du en felkod som kan hjälpa dig. Gissningsvis 400.

Re: VB6 och HTML

Postat: 15 oktober 2016, 21:12:49
av RadioDJ
Mr Andersson:
Vad heter Host-kommandot i HTTP 1.0???
Kan vara som så att UIPEthernet.h inte har Host:

Re: VB6 och HTML

Postat: 15 oktober 2016, 21:21:48
av Mr Andersson
Det finns ingen motsvarighet i 1.0, till skillnad mot 1.1 som kräver att Host ska vara med. Ta bort det helt eller byt nollan i versionsnumret till en etta (om servern stödjer det). Sen finns det servrar som t.ex. apache som accepterar host fast det inte finns i standarden, men det är inget man ska ta för givet om alla servrar.

Testa med endast strHTTP = "GET /?relay1=1 HTTP/1.0" & vbCrLf & vbCrLf
Det är den enklaste 1.0-requesten som går att göra.

Edit: men jag tror största felet är att du använder vbNewLine istället för vbCrLf.

Re: VB6 och HTML

Postat: 16 oktober 2016, 09:13:01
av RadioDJ
Fick det inte att fungera med Winsock i VB6.
Provade med Inet i stället och det gick med en gång.
Kommer nu att använda Inet istället.
Tack för ledtrådarna i alla fall.