Webseite Daten übergeben mittels POST

Anfängerfragen zum Programmieren mit PureBasic.
Tränenmond
Beiträge: 3
Registriert: 16.11.2015 21:49

Webseite Daten übergeben mittels POST

Beitrag von Tränenmond »

Hi,
Ich habe ein kleines Problem, ich möchte einer Webseite mein Usernamen und Passwort übergeben um mich mit dieser zu verbinden.
Es funktioniert hier aber nicht normal mit den in dem Aufruf übergebenen Daten sondern es möchte mittels POST übergeben werden!
Leider komme ich derzeit nicht richtig klar damit, ich verstehe atm. nicht wie ich dieser Webseite Ihre benötigten Daten anordnen und übertragen kann :(

Code: Alles auswählen

InitNetwork()

Buffer = ReceiveHTTPMemory("https://api.hitbox.tv/auth/login")

If Buffer
  SizeB = MemorySize(Buffer)
  Back$ = PeekS(Buffer, SizeB, #PB_UTF8)
  
  Debug Back$
  EndIf
Dieser Code gibt natürlich eine von der Seite generierte Fehlermeldung zurück, da ja die Login Daten fehlen. Aber egal wie ich es getestet habe diese dort mit unterzubringen, es funktioniert leider nicht. Ich habe mir auch diverse Beispiele aus dem Deutschen und Englischen Forum angesehen aber auch dort bekomme ich den Code nicht wirklich so Angepasst das es funktioniert ? Es gibt eine API um mit der Webseite zu kommunizieren, http://developers.hitbox.tv/#authentication. Meine Hoffnung ist nun das es jemanden gibt der mir ein einigermaßen Lauffähiges Beispiel geben könnte. Wie gesagt ich bin zwar eine Anfängerin aber ganz so Blutig ist das jetzt auch nicht, nur dieses Thema entzieht sich mir völlig!

LG Träne
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Webseite Daten übergeben mittels POST

Beitrag von edel »

Mit dem laden der Seite ist es leider nicht getan, denn deine Postdaten muessen ja noch irgendwo hin. Versuche es mal so :

Code: Alles auswählen

#TIMEOUT   = 1000
#CHUNKSIZE = 512

InitNetwork()

EnableExplicit

Structure Loginstruct
  login.s
  pass.s
  rememberme.s
EndStructure

Structure Responsestruct
  user_id.s
  user_name.s
  user_logo.s
  user_logo_small.s
  user_banned.s
  user_partner.s
  user_banned_channel.s
  superadmin.s
  livestream_count.s
  followers.s
  authToken.s
  login.s
  Data.s
EndStructure

Procedure.s Login()
  
  Protected cid.i
  Protected header.s
  Protected timeout.l
  Protected buflen.l
  Protected buffer.s
  Protected result.s
  Protected login.Loginstruct
  Protected json.i
  
  cid = OpenNetworkConnection("api.hitbox.tv", 80)
  
  If cid
    
    header = "POST /auth/login HTTP/1.1"    + #CRLF$
    header + "Host: api.hitbox.tv"           + #CRLF$
    header + "Content-Type: text/html"       + #CRLF$       
    header + "Content-Length: "
    
    login\login = "lala3"
    login\pass = "m,.123456"
    login\rememberme = ""
    
    json = CreateJSON(#PB_Any)
    
    If json
      
      InsertJSONStructure(JSONValue(json), login, Loginstruct)
      result = ComposeJSON(json)
      result = result
      
      FreeJSON(json)
      
      header + "" + Len(result)
      header + #CRLF$ + #CRLF$            
      
      SendNetworkString(cid, header)
      SendNetworkString(cid, result)
      
      timeout = ElapsedMilliseconds()
      result = ""      
      
      Repeat
        
        If NetworkClientEvent(cid) = #PB_NetworkEvent_Data 
          
          Repeat
            buffer = Space(#CHUNKSIZE)
            buflen = ReceiveNetworkData(cid, @buffer, #CHUNKSIZE)
            result + PeekS(@buffer, buflen, #PB_UTF8) 
          Until buflen < #CHUNKSIZE
          
          result = StringField(result, 2, #CRLF$ + #CRLF$)
          
          Break
          
        EndIf
        
      Until ElapsedMilliseconds() - timeout > #TIMEOUT
      
      CloseNetworkConnection(cid)
    EndIf
    
  EndIf
  
  ProcedureReturn result
EndProcedure

Define response.Responsestruct
Define result.s = login()
Define json = ParseJSON(#PB_Any, result)

Debug result

ExtractJSONStructure(JSONValue(json), @response, Responsestruct)

Debug json

Debug response\user_id
Debug response\user_name
Debug response\user_logo
Debug response\user_logo_small
Debug response\user_banned
Debug response\user_partner
Debug response\user_banned_channel
Debug response\superadmin
Debug response\livestream_count
Debug response\followers
Debug response\authToken
Debug response\login
Debug response\Data

Logindaten musst du natuerlich noch anpassen. Eventuell auf https umstellen.
Tränenmond
Beiträge: 3
Registriert: 16.11.2015 21:49

Re: Webseite Daten übergeben mittels POST

Beitrag von Tränenmond »

Ich Danke dir, dein Beispiel funktioniert Perfekt. Es ist zudem eine gute Grundlage um daraus zu lernen!
Sehr nette Community, ich hätte nie mit einer so schnellen und in diesem Umfang einwandfrei funktionierenden Lösung gerechnet.

LG Träne
Benutzeravatar
xXRobo_CubeXx
Beiträge: 120
Registriert: 12.06.2015 16:08
Computerausstattung: Version 5.41 LTS
Wohnort: Wohnort
Kontaktdaten:

Re: Webseite Daten übergeben mittels POST

Beitrag von xXRobo_CubeXx »

Hi Tränenmond :)
Wie bist du auf deinen Namen gekommen?
Inspiration aus Sims LP von Gronkh? :D
Version 5.41 LTS :)
Tränenmond
Beiträge: 3
Registriert: 16.11.2015 21:49

Re: Webseite Daten übergeben mittels POST

Beitrag von Tränenmond »

Hi Robo_Cube
Ganz genau da habe ich den her, und ich finde den Namen schön ;)

LG Träne
GronkhLP
Beiträge: 72
Registriert: 14.11.2013 22:43
Wohnort: Köln
Kontaktdaten:

Re: Webseite Daten übergeben mittels POST

Beitrag von GronkhLP »

Das freut mich zu hören. :)
Bild
Antworten