Re: daten per 'POST' versenden Kategorie: Programmierung (von Markus - 22.03.2011 8:47) | ||
Als Antwort auf daten per 'POST' versenden von efgn - 14.03.2011 19:08 | ||
| ||
> Hi@all. > Ich möchte Daten ohne DYNDNS versenden. > Soweit ich wei�, geht das mit 'POST'. > Die Webseite ist bei Host Europe gehostet, also kein direkter Zugang über eine URL. > > > hwcom.print("C80.237.132.72/80"); //IP-Adresse HostEurope > wait hwcom.ready(); > hwcom.print("HTTP/1.1n"); > wait hwcom.ready(); > hwcom.print("Host: heizung.efgn.den"); > wait hwcom.ready(); > hwcom.print("POST /xpr.php"); // php auch noch sehr nebulös > > loop > { > hwcom.ready(); > > hwcom.print(tta); > hwcom.print(ttb); > hwcom.print(ttc); > hwcom.print(ttd); > hwcom.print("rn"); > hwcom.flush(); > timer=system.timer();do{time=system.timer();}while time-timer<15000; > } > > > > Nur leider klappert es überhaupt nicht. > Mit Hyperterminal an Lan kommen ganz genau die Daten, aber die Seite reagiert so gar nicht. > > die php Seite ist mir überhaupt nicht geheuer, geschweige denn klar.. > > $Data="";$in=""; > > $in = file_get_contents("php://input"); > $Data.=$in; > echo " " ; > echo $in; > $Temp = explode(",", $Data); > echo $Temp; > echo " " ; > > > Angeblich überwacht file_get.... automatisch dem port 80. > > Mir ist der ganze HTML und php Kram eh nicht klar. > > Bitte um Hilfe. > MfG. Günther > Hallo Günther Ich habe vor einiger Zeit mal so was gemacht. Ob das auch mit deinem Provider funktioniert, musst du^ noch testen. Ich Poste hier einfach mal den Code meines Threads, der das Senden an eine PHP-Funktion auf meiner Webseite ausführt. In meiner Steuerung habe ich einfach Arrays definiert, in welche ich im laufe der Programmierung die Bit-, Byte-, Integer- oder Float-Werte abgelegt habe. So ist die Routine für das Senden der Daten an die PHP-Fuktion immer gleich, unabhängig, ob die Werte belegt sind oder nicht. Falls du am entsprechenden Teil der PHP-Funktion interessiert bist, melde dich. Gruss: Markus thread SendWGData { int Laenge, txtLaenge; long Timer, Timeout; byte i, Versuche, maxVersuche, SendOK, Min; string strSend, strBuffer, strComp, strPrefix; //, strTemp; string strBool, strInt[10], strLong[10], strFloat[10]; byte buf[512], recBuf[512]; cap.init(); swcom.init(); sleep 500; swcom.setbuf(buf,512); swcom.setspeed(5); lcdext.init(); Versuche = 0; maxVersuche = 0; strComp = "HT"; strPrefix = "werte="; Timeout = 2000; Min = system.minute(); loop { if system.minute() %2 == 0 and system.minute() != Min { Min = system.minute(); global.strSQLDate = "" ; str.putintf (global.strSQLDate,system.year()-2000,2); global.strSQLDate = global.strSQLDate + "-"; str.putintf (global.strSQLDate,system.month(),2); global.strSQLDate = global.strSQLDate + "-"; str.putintf (global.strSQLDate,system.day(),2); global.strSQLDate = global.strSQLDate + " "; str.putintf (global.strSQLDate,system.hour(),2); global.strSQLDate = global.strSQLDate + ":"; str.putintf (global.strSQLDate,system.minute(),2); global.strSQLDate = global.strSQLDate + ":"; str.putintf (global.strSQLDate,system.second(),2); // WHILE-Schlaufe für Sendeversuche do { Versuche = Versuche + 1; SendOK = 0; txtLaenge = str.length(strPrefix); txtLaenge = txtLaenge + str.length(global.strSQLDate)+1; // + 1 für Trennzeichen // alle Werte an einem Stück konvertieren, da sich die Längen sonst andern könnten wait cap.Capture(1); strBool=""; for i=0...9 { if global.ByteWert[i] strBool = strBool + '1'; else strBool = strBool + '0'; strBool = strBool +","; } txtLaenge = txtLaenge + 20; // für 10 Boolean-Werte, 1 oder 0 und ein Trennzeichen for i=0...9 { strInt[i] = ""; str.putint(strInt[i],global.IntWert[i]); strInt[i] = strInt[i] + ","; txtLaenge = txtLaenge + str.length(strInt[i]); } for i=0...9 { strLong[i] = ""; str.putlong(strLong[i],global.LongWert[i]); strLong[i] = strLong[i] + ","; txtLaenge = txtLaenge + str.length(strLong[i]); } for i=0...9 { strFloat[i] = ""; str.putfloatf(strFloat[i], global.FloatWert[i],1); strFloat[i] = strFloat[i] + ","; txtLaenge = txtLaenge + str.length(strFloat[i]); } // und das Capture wieder frei geben, damit anderes erledigt wird cap.Release(1); // hier beginnt das eigentliche Senden strSend="Cxxx.xxx.xxx.xxx/80xD"; swcom.print2(strSend); sleep 1000; // alles an einem Stück senden wait cap.Capture(1); strSend = "POST /ccreceive.php"; swcom.print2(strSend);wait swcom.ready(); strSend=" HTTP/1.1rn"; swcom.print2(strSend);wait swcom.ready(); strSend="Host: 192.168.9.5rn"; swcom.print2(strSend);wait swcom.ready(); strSend="Connection: closern"; swcom.print2(strSend);wait swcom.ready(); strSend="Cache-Control: norn"; swcom.print2(strSend);wait swcom.ready(); strSend="Content-type: "; swcom.print2(strSend);wait swcom.ready(); strSend="application/"; swcom.print2(strSend);wait swcom.ready(); strSend="x-www-form-urlencodedrn"; swcom.print2(strSend);wait swcom.ready(); strSend= "Content-length: "; str.putint(strSend, txtLaenge); strSend = strSend +"rnrn"; swcom.print2(strSend);wait swcom.ready(); // hier folgen die $_POST-Daten swcom.print2(strPrefix); //"werte=" swcom.print2(global.strSQLDate);swcom.put(44); swcom.print2(strBool); for i=0...9 { swcom.print2(strInt[i]); } for i=0...9 { swcom.print2(strLong[i]); } for i=0...9 { swcom.print2(strFloat[i]); } swcom.print("rn"); swcom.flush(); // und das Capture wieder frei geben cap.Release(1); // ab hier wird kontrolliert ob der Webserver ein ACK sendet Timer=system.timer(); do { Laenge = 0; // plm.beep(25);sleep 20;plm.beep(-1); // für Testzwecke sleep(Versuche * 200); if swcom.rxd() { Laenge = swcom.inbuffercnt(); swcom.receive(recBuf,Laenge,1000); } strBuffer = ""; if Laenge >= 2 { for i = 0 ... 1 { str.putchar(strBuffer,recBuf[i]); } } else { strBuffer = "??"; } } while math.labs(system.timer()-Timer) <= Timeout and Laenge == 0; if strx.comp(strBuffer, strComp) SendOK = 1; /* lcdext.delline(2); lcdext.goto(2,0); lcdext.zahl2(Laenge); lcdext.goto(2,3); lcdext.print2(strBuffer); lcdext.goto(2,7); lcdext.print2(strComp); lcdext.goto(2,10); lcdext.zahl4(txtLaenge); */ } while Versuche < maxVersuche and SendOK == 0; Versuche = 0; } } } | ||
Antwort schreiben Antworten: Re: daten per 'POST' versenden (von efgn - 7.04.2011 22:11) Re: daten per 'POST' versenden (von efgn - 7.04.2011 15:06) Re: daten per 'POST' versenden (von efgn - 7.04.2011 22:14) |