Toon posts:

[ Delphi ] HTTP GET/POST dmv API

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een tijdje bezig aan een internetprogrammaatje dat in Delphi is geschreven. Het programma zelf werkt perfect, en na enkele releases zijn zo'n beetje alle bugs er uit gehaald.

Ik ben nu begonnen met het optimaliseren van het programma, zowel bij de code (commentaar toevoegen e.d.) als in de GUI. Wat ik nu wil, is het programma compacter maken. Dit bereik ik door UPX te gebruiken: http://sourceforge.net/projects/upx/ en zo mijn executable in te pakken. Dit levert al een flinke winst op. Ook heb ik laatst uit de 'uses'-sectie van de code wat onnodige dingen weggehaald, wat ook weer een winst van zo'n 100 Kb betekende.

Dit zijn wel leuke methoden, maar het is niet het 'echt' kleiner maken van je programma. Dat kan volgens mij wel door het vervangen van dingen die door componenten worden gedaan door Windows-API code.

Weet iemand hier of het mogelijk is een HTTP GET en POST request af te laten handelen door API-code? Ik maak nu in de code van een thread een instantie van de TIdHTTP-klasse aan die ik gebruik voor de requests naar het internet. Kan dit ook met 'pure' code gedaan worden?

Ik heb gezocht en bij groups.google.com eigenlijk dit: http://groups.google.com/groups?hl=nl&selm=VA.000000df.04cb98f9%40quantify als enig bruikbaar resultaat gevonden, maar met de code die daar gebruikt wordt kan ik niet echt uit de voeten. De persoon die deze code heeft geplaatst is nogal wat dingen vergeten te vermelden (aantal variabelen en wat er bij 'uses' moet komen).

Kent iemand een werkende versie van de code waaraan hierboven wordt gerefereerd, of heeft iemand zelf ooit al eens zoiets geschreven?

  • 9900578Heck
  • Registratie: Juli 2001
  • Laatst online: 21-07 09:24
als je de indy componenten gebruikt heb je daar ook de source van.

Je kunt dus uit die source de stukken code gebruiken die je nodig hebt. Daarmee zeg ik niet dat je die letterlijk moet gaan kopieren, maar gewoon kijken hoe zij die dingen doen die je nodig hebt.

succes...

Verwijderd

Topicstarter
Bij de Indy componenten wordt gebruik gemaakt van een eigen implementatie van de Sockets, door Indy zelf dus, omdat het een cross-platform library is. Dit gaat in eerste instantie dus níet via API-calls die iets met HTTP kunnen, maar het werkt op een ander niveau waarschijnlijk wel weer met API-calls, die sockets openen en ernaar lezen en schrijven.

Maar dat is dus niet wat ik bedoel. Ik zou zelf vast ook wel een simpele HTTP client kunnen schrijven die alles met sockets doet, maar ik ben nu op zoek naar API's in Windows die gewoon op 'HTTP-niveau' kun werk kunnen doen, en waarbij je dus geen rekening hoeft te houden met de Sockets. Bestaan die API calls? Blijkbaar wel, want in het voorbeeld waar ik de link op groups.google.com van gaf, worden deze gebruikt.

  • 9900578Heck
  • Registratie: Juli 2001
  • Laatst online: 21-07 09:24
wat snap je niet aan die code van die figuur dan?
lijkt mij redelijk duidelijk, maar heb er alleen vluchtig naar gekeken natuurlijk ;)

Verwijderd

Topicstarter
Het is niet dat ik het niet snap, maar probeer jij het maar eens goed werkend te krijgen in Delphi, ik krijg dat niet zo 1-2-3 voor elkaar hoor, maar misschien ligt dat aan mij.

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

gebruik inderdaad bij voorkeur Indy, deze zijn nu ook in D6 'native', anders kun je ze via jedi.org downloaden... ik doe ook gets ermee en dat werkt perfect!

Cogito Ergo Credo


Verwijderd

Topicstarter
Op donderdag 18 oktober 2001 13:19 schreef jopiek het volgende:
gebruik inderdaad bij voorkeur Indy, deze zijn nu ook in D6 'native', anders kun je ze via jedi.org downloaden... ik doe ook gets ermee en dat werkt perfect!
Ik werk ook met Indy in D6, en heb er geen enkel probleem mee, maar dat is dan ook niet precies mijn vraag in dit topic. Ik wil juist alles doen zonder componenten te gebruiken.

Verwijderd

Wat ook aardig is om je programma te verkleinen, is doormiddel van het direct koppelen van system DLL ipv. de units gebruiken die Delphi biedt (bijv. mbv. External Kernel32.dll ipv. uses Windows)
Pagina: 1