1. Artikel
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forum
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Paules-PC-Forum.de
  2. Forum
  3. Programmierung
  4. XProfan

Senden von Headern?

  • Martin_K
  • 25. Dezember 2023 um 14:46
  • Martin_K
    Fortgeschrittener
    Reaktionen
    7
    Beiträge
    165
    • 25. Dezember 2023 um 14:46
    • #1

    Ich hab mir eine kleine Software zusammengetippert, mit der ich bei meinem Lieblingsonlinespiel meine Markttätigkeiten verwalten kann. Dazu sende ich eine Abfrage über eine URL und bekomme die Antwort als downloadfile. Alles prima.

    Nun gibts aber Sachen, für die ich mich einloggen muss - das läuft über OAuth 2.0. Da komme ich mit meinen Programmierfähigkeiten an meine Grenzen, denn für eine Abfrage muss ich nicht nur eine einzeilige URL schicken sondern mit Header...

    Zitat

    Create a Base64 encoded string, including padding, where the contents before encoding are your application’s client ID, followed by a :, followed by your application’s secret key (e.g. Base64(<client_id>:<secret_key>)). For example, given the input CLIENT_ID:CLIENT_SECRET, the resulting string should be Q0xJRU5UX0lEOkNMSUVOVF9TRUNSRVQ=.

    • You will need to send the following HTTP headers (replace anything between <>, including <>):
      • Authorization: Basic <Base64 encoded credentials>
      • Content-Type: application/x-www-form-urlencoded
      • Host: login.eveonline.com

    Finally, send a POST request to https://login.eveonline.com/v2/oauth/token with your form encoded values and the headers from the last step.

    Wie schaffe ich mit XProfan 4 diese Hürde?

    ---
    Xprofan X4, Win7/32, Win10/64

  • H.Brill
    Dauergast
    Reaktionen
    457
    Beiträge
    1.161
    • 25. Dezember 2023 um 19:13
    • #2

    Naja, ich würde es mal zuerst 'einfach' probieren :

    Code
    Declare String MyID, Header
    Cls
    MyID = Encode64("CLIENT_ID:CLIENT_SECRET")
    Header = "Authorization: Basic <\:MyID;>\nContent-Type: application/x-www-form-urlencoded\nHost: login.eveonline.com"
    Print Header
    waitkey

    Das "CLIENT_ID:CLIENT_SECRET" 

    mußt du natürlich mit deiner eigenen ID:Key ersetzen. Kommt jetzt darauf an, wie die es

    genau wollen, also ob ein \n reicht. Notfalls das ganze mal auch in eine Structur pressen

    und dann per Bereich übergeben. Evtl. reicht ja obiges schon. Oder mal ohne \n probieren.

    Die spitzen Klammern <> scheinen dazu zu gehören oder liest du das anders ?

    Die zu sendende URL wäre dann vielleicht sowas :

    Code
    "https://login.eveonline.com/v2/oauth/token=\:Header;"

    Wir sind die XProfaner.

    Sie werden von uns assimiliert.

    Widerstand ist zwecklos!

    Wir werden alle ihre Funktionen und Algorithmen

    den unseren hinzufügen.

    Einmal editiert, zuletzt von H.Brill (25. Dezember 2023 um 19:24)

  • Martin_K
    Fortgeschrittener
    Reaktionen
    7
    Beiträge
    165
    • 25. Dezember 2023 um 22:51
    • #3

    besten dank, ich probiers aus.

    ---
    Xprofan X4, Win7/32, Win10/64

  • SvenB
    War schon mal da
    Reaktionen
    26
    Beiträge
    31
    • 1. Januar 2024 um 20:19
    • #4

    Ein frohes neues Jahr zusammen! Ich fürchte so einfach ist es nicht, hier etwas per downloadfile zusammenzubauen. Ich versuche mal alles außer der Base64-Kodierung zu beleuchten.

    Downloadfile wird nur als sogenanntes "GET" funktionieren und ein Header lässt sich auch nicht in die URL integrieren. Es muss also wie gefordert ein POST mit entsprechendem Header verwendet werden. Ich habe dazu mal einen Code von mir modifiziert. Da ich keine Zugangsdaten habe, gibt er wie erwartet den HTTP Statuscode 401 (nicht autorisiert) zurück. Mit deinen base64 kodierten Zugansdaten dürfte es gehen allerdings geht aus deinem Beitrag noch nicht hervor wie dir eigentlichen Daten neben dem Header struktueirt sein sollen. Zum testen von APIs kann ich diese Seite sehr empfehlen: https://reqbin.com/
    Sobald die Abfrage dort gelingt, weiß man, was man zu programmieren hat.

    Hier der XProfan Code:

    Code
    Cls RGB(40,40,40)
    Def InternetOpen(6)           !"wininet.dll","InternetOpenA"
    Def InternetConnect(8)        !"wininet.dll","InternetConnectA"
    Def HttpOpenRequest(8)        !"wininet.dll","HttpOpenRequestA"
    Def HttpAddRequestHeaders(2)  !"wininet.dll","HttpAddRequestHeadersA"
    Def HttpSendRequest(5)        !"wininet.dll","HttpSendRequestA"
    Def InternetCloseHandle(1)    !"wininet.dll","InternetCloseHandle"
    Def InternetReadFile(4)       !"wininet.dll","InternetReadFile"
    Def HttpQueryInfo(5)          !"wininet.dll","HttpQueryInfoA"
    Def &INTERNET_OPEN_TYPE_PRECONFIG  0
    Def &INTERNET_DEFAULT_HTTPS_PORT  443
    Def &INTERNET_SERVICE_HTTP  3
    Def &INTERNET_FLAG_RELOAD $80000000
    Def &INTERNET_FLAG_EXISTING_CONNECT $20000000
    Def &INTERNET_FLAG_SECURE $800000
    Declare url$, erg&, agent$, internetSession&, internetConnect&, httpOpenRequest&, method$, header$, headers$, data$
    Declare bytes#, buffer#, bytes&,path$,server$
    Declare ptrAgent&, ptrPath&, ptrServer&, ptrMethod&, ptrHeader&, ptrData&, br$
    declare status#, ptrStatusLength&,statusLength&
    Dim bytes#, 4
    Dim buffer#, 16384
    dim status#,32
    statusLength& = 32
    ptrStatusLength& =  addr(statusLength&)
    path$ = "v2/oauth/token"
    server$ = "login.eveonline.com"
    agent$ = "XProfan"
    method$ = "POST"
    data$ = "{\qkey\q : \qvalue\q}"
    br$ = "\r\n"
    ptrAgent&  = Addr(agent$)
    ptrPath&   = Addr(path$)
    ptrServer& = Addr(server$)
    ptrMethod& = Addr(method$)
    ptrData&   = Addr( data$)
    internetSession&    = InternetOpen(ptrAgent&, &INTERNET_OPEN_TYPE_PRECONFIG, 0, 0, 0, 0)
    internetConnect&    = InternetConnect(internetSession&, ptrServer&, &INTERNET_DEFAULT_HTTPS_PORT, 0, 0, &INTERNET_SERVICE_HTTP, 0, 0)
    httpOpenRequest&    = HttpOpenRequest(internetConnect&, ptrMethod&, ptrPath&, 0, 0, 0, (&INTERNET_FLAG_RELOAD | &INTERNET_FLAG_SECURE ), 0)
    header$ = "Authorization: Basic <Q0xJRU5UX0lEOkNMSUVOVF9TRUNSRVQ=>"+br$+"Content-Type: application/x-www-form-urlencoded"+br$+"Host: login.eveonline.com" +br$+br$
    ptrHeader& = Addr(header$)
    HttpSendRequest(httpOpenRequest&, ptrHeader&, len(header$), ptrData&,len(data$))
    InternetReadFile(httpOpenRequest&, buffer#, 8192, bytes#)
    
    HttpQueryInfo(httpOpenRequest&, 19, status#, ptrStatusLength&, 0) 
    print "HTTP Status-Code: "+String$(status#,0)
    bytes& = long(bytes#, 0)
    Print "\nBytes: " + str$(bytes&)
    Print "Antwort:"+String$(buffer#,0)
    InternetCloseHandle(httpOpenRequest&)
    InternetCloseHandle(internetConnect&)
    InternetCloseHandle(internetSession&)
    WaitInput
    Alles anzeigen

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Windows 11

  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™