GM HTTP (Version 1.0.0.1)

    • GEX

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Nein, das habe ich in der Tat nirgends erwähnt. Der Grund dafür ist ganz einfach: Die Funktionsweise von Uploads ist durch HTTP festgelegt, nicht durch meine Extension. Ich stelle lediglich eine Möglichkeit zur Verfügung HTTP im Game Maker zu nutzen. Würde ich die Sache mit den Uploads mit in die Hilfedatei aufnehmen, so müsste ich konsequenterweise gleich die komplette HTTP-Spezifikation mit aufnehmen. Das würde sich aber erstens niemand durchlesen wollen und ist zweitens ja auch frei im Internet zu finden.

      Um es kurz zu machen: Wer eine HTTP-Extension verwendet, sollte sich schon im Klaren darüber sein, wie HTTP im groben funktioniert. ;)

      Aber das Problem mit den Dateiuploads ist ja jetzt geklärt, sodass jeder, der vor der selben Frage steht, hier eine Antwort findet.

      €dit: Wird das im POST oder GET Format hochgeladen mit http_request_add_upload_file? Möchte es mit PHP verarbeiten...

      Mit POST, aber da es sich um einen Dateiupload handelt, landet es bei PHP in $_FILES.
    • Bl@ckSp@ark schrieb:

      jlsnews schrieb:

      €dit: Wird das im POST oder GET Format hochgeladen mit http_request_add_upload_file? Möchte es mit PHP verarbeiten...

      Mit POST, aber da es sich um einen Dateiupload handelt, landet es bei PHP in $_FILES.


      Davon bin ich ausgegangen, eine Datei bzw. dessen Inhalt mit GET zu senden...? Naja... :vogel:
      :thumbsup:
    • jlsnews schrieb:

      Davon bin ich ausgegangen, eine Datei bzw. dessen Inhalt mit GET zu senden...? Naja...

      Soweit ich mich entsinnen kann gibts dort allerdings ein limit von 4kb (bei get). Ob das bei allen servern so konfiguriert ist, weiß ich nicht. Falls du dennoch fehler 414 bekommst, weißt du, was schief gelaufen ist ;)

      Aber generell sollte man Dateien schon so senden, wie es vorgesehen ist.

      MfG SDX
    • Mit PHP und HTML kenn' ich mich aus... 8)

      Da musst du dir keine Sorgen machen, maxda!

      @Bl@ckSp@rk, ich habe da noch ein Problem bei einem File-Download, die Datei wird erzeugt aber es wird kein Inhalt vom Server heruntergeladen.

      GML-Quellcode

      1. // BEGINNE DOWNLOAD
      2. request = http_request_create();
      3. // Datei angeben, die heruntergeladen werden soll.
      4. http_request_set_url(request,"http://furzikus.com/CHAT/datei.txt");
      5. http_request_set_file(request,"verlauf.txt");
      6. http_request_perform(request);
      7. http_request_wait(request);
      8. http_request_destroy(request);
      9. // BEENDET
      Alles anzeigen
      :thumbsup:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jlsnews ()

    • Dann ist vielleicht ein Fehler aufgetreten. Hast du dir mal die Rückgabewerte von http_request_perform und http_request_get_successful angeschaut? Wenn die beide true zurückgeben, sollte in der Ausgabedatei eigentlich was stehen. Außer die URL gibt einfach nichts zurück, was man ja leicht feststellen kann, wenn man sie mal im Browser aufruft.
    • Hab ich das richtig verstanden, einen Rückgabewert der Datei lese ich mit

      GML-Quellcode

      1. http_request_get_buffer
      ?

      Zum Beispiel

      GML-Quellcode

      1. // BEGINNE DOWNLOAD DER CHAT-DATEI
      2. startdownload = http_request_create();
      3. // Datei angeben, die heruntergeladen werden soll.
      4. http_request_set_url(startdownload,"http://furzikus.com/CHAT/datei.txt");
      5. http_request_set_file(startdownload,"verlauf.txt");
      6. http_request_perform(startdownload);
      7. draw_text(10,10,http_request_get_buffer);
      8. http_request_wait(startdownload);
      9. http_request_destroy(startdownload);
      10. // BEENDET
      Alles anzeigen


      Und kann die GEX eingentlich einen Upload und Download gleichzeitig in verschiedenen Objekten machen?

      Jetzt sollten es alle Fragen gewesen sein... PUH!... :D



      €dit: successful und perform geben beide 0 zurück. Im Browser funzt aber...
      :thumbsup:

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jlsnews ()

    • http_request_get_buffer gibt die Antwort des Servers zurück, falls man denn diese in den Buffer schreiben lassen hat. Mit http_request_set_file wird aber festgelegt, dass die Antwort in die angegebene Datei zu schreiben ist. D.h. in deinem Beispiel bringt dir http_request_get_buffer nichts. Die Antwort des Servers sollte nach dem Ausführen in "verlauf.txt" stehen.

      Und kann die GEX eingentlich einen Upload und Download gleichzeitig in verschiedenen Objekten machen?

      Ja, das geht. Musst dann natürlich mit http_request_create zwei Anfragen erstellen, die aber parallel ausgeführt werden können.

      €dit: successful und perform geben beide 0 zurück. Im Browser funzt aber...

      Dass http_request_perform fehlgeschlagen ist, ist seltsam. Schick' mir doch mal bitte eine gmk/gm81 an der man den Fehler sehen kann. (Bitte auch mit richtiger URL)
    • So in der Form nicht, da die Extension eine DLL benutzt. Falls es aber auf den anderen Plattformen Äquivalentes für den GM gibt, könnte man es sicher portieren. Man müsste dann einfach nur den Code auf der entsprechenden Plattform neu kompilieren. Bis auf die Threads, für die ich direkt die WinApi verwendet habe, sollte alles portabel sein. Man müsste also dann nur die Klasse für die Threads portieren.
    • Hallo alle miteinander!

      Ich habe mir beim herumbasteln mit der dll ein kleines script zum Platzsparen gebastelt.

      Dieses bildet die Funktion http_request der alten dll nach.

      Folgender ist mein Code:

      GML-Quellcode

      1. var idd;
      2. //http_request(url)
      3. idd=http_request_create();
      4. http_request_set_url(idd,global.server + argument0);
      5. http_request_perform(idd);
      6. http_request_wait(idd) ;
      7. return http_request_get_buffer(idd) ;
      Alles anzeigen


      Ich hoffe mal ich habe irgendeinen fatalen Fehler gemacht, denn jedes mal wenn ich dies testen will, verabschiedet sich mein Game mit:

      game.exe funktioniert nicht mehr


      Was ist da falsch?

      lg Partik

      Edit: fehler mit "argument1" verbessert, problem besteht
    • Das sollte eigentlich so laufen. Lade am besten mal eine gmk mit dem Fehler hoch.

      Davon abgesehen wäre es aber sinnvoll den Request am Ende wieder zu löschen, also

      GML-Quellcode

      1. var idd, buffer;
      2. //http_request(url)
      3. idd=http_request_create();
      4. http_request_set_url(idd,global.server + argument0);
      5. http_request_perform(idd);
      6. http_request_wait(idd) ;
      7. buffer = http_request_get_buffer(idd) ;
      8. http_request_destroy(idd);
      9. return buffer;
      Alles anzeigen
    • Wäre trotzdem gut zu wissen, was da schiefgelaufen ist. Denn abgesehen davon, dass dein Code ein Memory-Leak erzeugen würde, sollte das Programm eigentlich nicht abstürzen. Wäre also nett, wenn du die gmk mit dem Fehler mal hochladen könntest, damit ich nach eventuellen Bugs suchen kann. Danke.
    • Das habe ich doch geschrieben. Nachdem ich die Anfragen am ende des Scripts via http_request_destroy(id) gelöscht habe, lief alles glatt. Bei anderen Scripts habe ich das auch im Nachhinein geändert. Ich habe jetzt alles schon ausgetauscht, aber wenn du willst kann ich dir die gmk noch schicken.

      Der fehler trat auf bspw. nachdem man das script 2 mal aufgerufen hat ohne die anfragen zwischendrin wieder zu löschen.
    • Mein Einwand war doch, dass es mit deinem alten Code trotzdem hätte funktionieren müssen. Also auch ohne den Request am Ende zu löschen. ;)

      Wäre aber nett, wenn du mir die Version mit dem Fehler mal schicken könntest. Ansonsten werde ich selber mal schauen ob ich ihn reproduzieren kann.
    • Beste Erweiterung für den GM,wie ich finde.

      Super Arbeit! :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup: :thumbsup:

      EDIT: Das Downloaden von manchen Dateien ist offenbar nicht möglich. Eine Datei vom typ zip mit 25 MB und eine exe datei die ein ä im namen hat,können nicht heruntergeladen werden(da steht zwar complete aber die datei selbst ist nur 2kb groß)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von derkimba ()

    • Beste Erweiterung für den GM,wie ich finde.

      Super Arbeit!

      Danke, freut mich zu hören :)

      ...eine exe datei die ein ä im namen hat...

      URLs müssen nach RFC 2396 kodiert werden. Das bedeutet insbesondere, dass Sonderzeichen entsprechend ersetzt werden müssen. Ein "ä" muss durch "%84" ersetzt werden. Am einfachsten macht man es sich natürlich indem man auf Sonderzeichen im Dateinamen verzichtet. Die 2kb Datei, die du da erhälst, ist vermutlich eine HTML Datei, in der steht, dass die Datei nicht gefunden wurde oder ähnliches.

      Eine Datei vom typ zip mit 25 MB...

      Dazu kann ich ohne weitere Informationen erstmal nichts sagen. Am besten schickst du mir mal den Link zu dieser Datei, damit ich mir das mal anschauen kann.