Winsock unter Windows Mobile 2003 SE

01/09/2007 - 14:42 von Kai Wiechers | Report spam
Hallo,
ich versuche ein Programm zu schreiben mit dem ich das http API eines
internet SMS Anbieters nutzen kann. Habe an sich wenig ahnung von Visual
Basic aber bin doch recht weit wie ich finde. Allerdings hànge ich nun fest.
Und das an der Wichtigsten stelle. Dem SMS versenden :(
Mit Visual Basic schicke ich die http GET anfrage genau so ab wie ich es mit
eVB mache und da funktioniert es. Es muss also ein Fehler in meinem Code
sein. Ich finde Ihn nur leider nicht!
Der Fehler ist "An error was encountered while running this program." also
keine sehr genaue Beschreibung. Den Debugmodus kann ich nicht nutzen da ich
eVB in einem Virtal PC mit Win XP ausführe und der Emulator nicht im
Emulator laufen will. eVB unter Windows Vista geht nicht :( VB .net würde
ich gern probieren, habe aber nur die Express Edition. Geld für die "große"
Version habe ich nicht und das lohnt bei mir auch nicht... Also kann ich
immer nur direkt auf meinem MDAc testen. Der Fehler kommt wenn ich auf
Senden klicke, also bei der "Private Sub Command1_Click()". Er taucht sofort
auf, was für mich heißt das auch noch keine Daten über GPRS gesendet
werden/wurden. Wenn mir jemand weiterhelfen kann freue ich mich sehr! Vielen
Dank!

Auf meiner Form sind diese Elemente:

fünf Textboxen
zwei Commandbuttons
eine Combobox
eine Checkbox
ein Timer
ein Winsockcontrol

mein Code:


Option Explicit
Public istneu As Boolean


Private Sub Command1_Click()
'Mit dem SMS Gateway verbinden
WinSock1.Close
WinSock1.RemoteHost = "gateway.sms77.de"
WinSock1.RemotePort = 80
WinSock1.Connect
End Sub


Private Sub Command2_Click()
'code für den Test Button der URL codierung
Dim testtext As String
testtext = Replace(txt_msg.Text, " ", "%20")
MsgBox (testtext)
End Sub


Private Sub Form_Load()
'variable festlegen und combobox füllen
istneu = True
Combo1.AddItem ("basicplus")
Combo1.AddItem ("standard")
Combo1.AddItem ("quality")
Combo1.AddItem ("flash")
Combo1.AddItem ("festnetz")
End Sub


Private Sub Form_OKClick()
App.End
End Sub


Private Sub Timer1_Timer()
'Prüfen welches SMS format gewàhlt wurde
If Combo1.Text = "basicplus" Then
txt_status.Text = "0,035 Ct/SMS :: kein eigener Abs."
ElseIf Combo1.Text = "standard" Then txt_status.Text = "0,055 Ct/SMS ::
eigener Abs. :: Zustellung nicht Garantiert"
ElseIf Combo1.Text = "quality" Then txt_status.Text = "0,079 Ct/SMS ::
eigener Abs. (wàhlbar)"
ElseIf Combo1.Text = "flash" Then txt_status.Text = "0,039 Ct/SMS ::
kein eigener Abs. :: nicht weltweit"
ElseIf Combo1.Text = "festnetz" Then txt_status.Text = "0,12 Ct/SMS ::
SMS wird vorgelesen :: nicht weltweit"
Else
txt_status.Text = "ACHTUNG! Type ist ungültig!"
End If
End Sub


Private Sub txt_msg_GotFocus()
'Text aus der Nachrichtentextbox entfernnen wenn das erste mal darauf
geklickt wird
If istneu = True Then
txt_msg.Text = ""
istneu = False
End If
End Sub


Private Sub WinSock1_Connect()
Dim sRequest As String
Dim msgText As String

' Nachricht für die URL codieren
msgText = Replace(txt_msg.Text, " ", "%20")

' HTTP-Anfrage erstellen und mit leerer Zeile abschließen:
sRequest = "GET /?u=" & txt_user.Text & "&p=" & txt_pass.Text & "&to=" &
txt_empf.Text & "&text=" & msgText & "&type=" & Combo1.Text & "&debug=" &
Check1.Value & " HTTP/1.1" & vbNewLine
sRequest = sRequest & "Host: gateway.sms77.de" & vbNewLine
sRequest = sRequest & "Accept: */*" & vbNewLine
sRequest = sRequest & "Connection: close" & vbNewLine
sRequest = sRequest & vbNewLine
' Die Anfrage absenden:
WinSock1.SendData (sRequest)
End Sub


Private Sub WinSock1_DataArrival(ByVal bytesTotal As Long)
'Antwort vom Server ersteinmal nur in einer MSGBox anzeigen
WinSock1.GetData sNewData
MsgBox (sNewData)
End Sub
 

Lesen sie die antworten

#1 Michael Maluck
02/09/2007 - 23:06 | Warnen spam
Hallo Kai,

wenn Du keine kommerzielle Anwendung entwickelst, kannst Du eventuell mit
der Beta von Visual Studio 2008 den Fehler finden. Schau mal hier:
http://www.microsoft.com/downloads/...laylang=de
Das làuft unter Vista und somit auch der Emulator mit Debugging etc.

Finde es auch schlimm, dass man so abhàngig vom Betriebssystem und der
Entwicklungsumgebung ist. Kannst z.B. nicht einfach von Haus aus mit Visual
Studio 2005/2008 auf .NET 1.1 basierte Projekte fixen/weiterentwickeln. Wenn
die volle IDE Unterstützung willst musst auf .NET 2 migrieren. Und wie Du
schon erwàhnt hast, laufen die àlteren IDEs wie VS 2003 nicht unter Vista.
Das ist sehr àrgerlich.


"Kai Wiechers" schrieb im Newsbeitrag
news:ON$
Hallo,
ich versuche ein Programm zu schreiben mit dem ich das http API eines
internet SMS Anbieters nutzen kann. Habe an sich wenig ahnung von Visual
Basic aber bin doch recht weit wie ich finde. Allerdings hànge ich nun
fest. Und das an der Wichtigsten stelle. Dem SMS versenden :(
Mit Visual Basic schicke ich die http GET anfrage genau so ab wie ich es
mit eVB mache und da funktioniert es. Es muss also ein Fehler in meinem
Code sein. Ich finde Ihn nur leider nicht!
Der Fehler ist "An error was encountered while running this program." also
keine sehr genaue Beschreibung. Den Debugmodus kann ich nicht nutzen da
ich eVB in einem Virtal PC mit Win XP ausführe und der Emulator nicht im
Emulator laufen will. eVB unter Windows Vista geht nicht :( VB .net würde
ich gern probieren, habe aber nur die Express Edition. Geld für die
"große" Version habe ich nicht und das lohnt bei mir auch nicht... Also
kann ich immer nur direkt auf meinem MDAc testen. Der Fehler kommt wenn
ich auf Senden klicke, also bei der "Private Sub Command1_Click()". Er
taucht sofort auf, was für mich heißt das auch noch keine Daten über GPRS
gesendet werden/wurden. Wenn mir jemand weiterhelfen kann freue ich mich
sehr! Vielen Dank!

Auf meiner Form sind diese Elemente:

fünf Textboxen
zwei Commandbuttons
eine Combobox
eine Checkbox
ein Timer
ein Winsockcontrol

mein Code:


Option Explicit
Public istneu As Boolean


Private Sub Command1_Click()
'Mit dem SMS Gateway verbinden
WinSock1.Close
WinSock1.RemoteHost = "gateway.sms77.de"
WinSock1.RemotePort = 80
WinSock1.Connect
End Sub


Private Sub Command2_Click()
'code für den Test Button der URL codierung
Dim testtext As String
testtext = Replace(txt_msg.Text, " ", "%20")
MsgBox (testtext)
End Sub


Private Sub Form_Load()
'variable festlegen und combobox füllen
istneu = True
Combo1.AddItem ("basicplus")
Combo1.AddItem ("standard")
Combo1.AddItem ("quality")
Combo1.AddItem ("flash")
Combo1.AddItem ("festnetz")
End Sub


Private Sub Form_OKClick()
App.End
End Sub


Private Sub Timer1_Timer()
'Prüfen welches SMS format gewàhlt wurde
If Combo1.Text = "basicplus" Then
txt_status.Text = "0,035 Ct/SMS :: kein eigener Abs."
ElseIf Combo1.Text = "standard" Then txt_status.Text = "0,055 Ct/SMS ::
eigener Abs. :: Zustellung nicht Garantiert"
ElseIf Combo1.Text = "quality" Then txt_status.Text = "0,079 Ct/SMS ::
eigener Abs. (wàhlbar)"
ElseIf Combo1.Text = "flash" Then txt_status.Text = "0,039 Ct/SMS ::
kein eigener Abs. :: nicht weltweit"
ElseIf Combo1.Text = "festnetz" Then txt_status.Text = "0,12 Ct/SMS ::
SMS wird vorgelesen :: nicht weltweit"
Else
txt_status.Text = "ACHTUNG! Type ist ungültig!"
End If
End Sub


Private Sub txt_msg_GotFocus()
'Text aus der Nachrichtentextbox entfernnen wenn das erste mal darauf
geklickt wird
If istneu = True Then
txt_msg.Text = ""
istneu = False
End If
End Sub


Private Sub WinSock1_Connect()
Dim sRequest As String
Dim msgText As String

' Nachricht für die URL codieren
msgText = Replace(txt_msg.Text, " ", "%20")

' HTTP-Anfrage erstellen und mit leerer Zeile abschließen:
sRequest = "GET /?u=" & txt_user.Text & "&p=" & txt_pass.Text & "&to=" &
txt_empf.Text & "&text=" & msgText & "&type=" & Combo1.Text & "&debug=" &
Check1.Value & " HTTP/1.1" & vbNewLine
sRequest = sRequest & "Host: gateway.sms77.de" & vbNewLine
sRequest = sRequest & "Accept: */*" & vbNewLine
sRequest = sRequest & "Connection: close" & vbNewLine
sRequest = sRequest & vbNewLine
' Die Anfrage absenden:
WinSock1.SendData (sRequest)
End Sub


Private Sub WinSock1_DataArrival(ByVal bytesTotal As Long)
'Antwort vom Server ersteinmal nur in einer MSGBox anzeigen
WinSock1.GetData sNewData
MsgBox (sNewData)
End Sub

Ähnliche fragen