Neue Version von HTTPMOD mit neuen Features zum Testen

Begonnen von StefanStrobel, 05 Dezember 2015, 08:31:32

Vorheriges Thema - Nächstes Thema

fireball

Hi,

kann mir jemand auf die Sprünge helfen, wo mein Problem liegt?!
Ausgangssituation, ich frage meine Katzenklappe ab. Nach einem Login bekommt man einen Token und den sollte man dann für weitere Anfragen nutzen.

Das ist mein Device:
Internals:
   BUSY       0
   DEF        https://app.api.surehub.io/api/me/start 300
   FUUID      66acb8ca-f33f-0804-6cfa-8787b17a4c2a5eb8
   Interval   60
   LastAuthTry 2024-08-02 16:19:26
   MainURL    https://app.api.surehub.io/api/me/start
   ModuleVersion 4.2.0 - 11.8.2023
   NAME       Katzenklappe
   NOTIFYDEV  global
   NR         717
   NTFY_ORDER 50-Katzenklappe
   STATE      1
   TYPE       HTTPMOD
   eventCount 40
   httpbody   {"data":}
   sid        eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://app.api.surehub.io:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://app.api.surehub.io/api/me/start
     header     Content-Type: application/json
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
     host       app.api.surehub.io
     httpheader HTTP/1.1 200 OK
Date: Fri, 02 Aug 2024 14:20:10 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Server: nginx
ETag: "ykJ1B9fWBkqtFfvnxv88fQCIPmc"
api-supported-versions: 1.0
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
     httpversion 1.1
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /api/me/start
     protocol   https
     redirects  0
     timeout    2
     url        https://app.api.surehub.io/api/me/start
     sslargs:
   QUEUE:
   READINGS:
     2024-08-02 15:39:52   LAST_ERROR      read from https://app.api.surehub.io:443 timed out
     2024-08-02 14:10:15   Status          1
   REQUEST:
     context    reading
     data       
     header     Content-Type: application/json
Accept: application/json
Authorization: Bearer $sid
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://app.api.surehub.io/api/me/start
   defptr:
     readingBase:
       Status     reading
     readingNum:
       Status     01
     readingOutdated:
     requestReadings:
       update:
         Status     reading 01
Attributes:
   enableControlSet 1
   enableCookies 1
   extractAllJSON 0
   get01CheckAllReadings 0
   get01ExtractAllJSON 0
   get01Name  Tiere
   get01URL   https://app.api.surehub.io/api/pet/546255
   get1Name   Geräte
   get1URL    https://app.api.surehub.io/api/pet/546255
   httpVersion 1.1
   icon       hm-tc-it-wm-w-eu
   reAuthRegex .*401.*
   replacement01Mode key
   replacement01Regex %%Katzenklappe_Secret%%
   replacement01Value Katzenklappe_Secret
   requestHeader1 Content-Type: application/json
   requestHeader2 Accept: application/json
   requestHeader4 Authorization: Bearer $sid
   room       GARAGE
   set01Max   100
   set01Method PATCH
   set01Min   0
   set01Name  Auf
   set01TextArg 1
   set01URL   http://Katzenklappe /data/v2/domain/Shutter/$val1/RequestAction
   set01ValueSeparator ,
   showBody   1
   showError  1
   sid1Data   {"email_address":"xxxxxxxxxxx","password":"%%Katzenklappe_Secret%%","device_id":"1160528"}
   sid1Header1 Content-Type: application/json
   sid1Header2 accept: application/json
   sid1IdJSON data_token
   sid1URL    https://app.api.surehub.io/api/auth/login
   userattr   reAuthRegex requestHeader2 requestHeader3 sidHeader1 sidHeader2
   verbose    5


Die LoginSeite wird über sid1 - Abgefragt und es wird auch ein Token erstellt.
Dieser wird auch für die URL unter DEF genutzt.

Ich will jetzt aber weitere URLs abfragen, mit get01 usw... evtl. sogar set01 (das ist nur als Dummy angelegt).
Hier seh ich aber im Log, dass trotz requestHeader4 Authorization: Bearer $sid dieser Token bei den getXX nicht genommen wird.

Im Log sieht man das dann hier, bei "HandleSendQueue sends get1" steht No Data, No Header!

2024.08.02 15:58:43 5: Katzenklappe: JSON Flatter sets data_token to eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
2024.08.02 15:58:43 4: Katzenklappe: extracted JSON values to internal
2024.08.02 15:58:43 5: Katzenklappe: GetCookies is looking for Cookies
2024.08.02 15:58:43 5: Katzenklappe: ExtractSid called, context sid, num 1
2024.08.02 15:58:43 5: Katzenklappe: Checking SID with JSON data_token
2024.08.02 15:58:43 4: Katzenklappe: ExtractSid set sid to eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
2024.08.02 15:58:43 4: Katzenklappe: checking for redirects, code=200, ignore=0
2024.08.02 15:58:43 4: Katzenklappe: no redirects to handle
2024.08.02 15:58:43 5: Katzenklappe: Read callback sets LAST_REQUEST to auth1
2024.08.02 15:58:43 5: Katzenklappe: HandleSendQueue called from Fhem internal timer, qlen = 1
2024.08.02 15:58:43 5: Katzenklappe: Replace called for type get1, regex (?^:%%Katzenklappe_Secret%%), mode key, value Katzenklappe_Secret input: https://app.api.surehub.io/api/pet/xxxxxx
2024.08.02 15:58:43 5: Katzenklappe: ReadKeyValue tries to read value for Katzenklappe_Secret from file
2024.08.02 15:58:43 5: Katzenklappe: no separator for multiple values (Context get1, 1)
2024.08.02 15:58:43 4: Katzenklappe: HandleSendQueue sends get1 with timeout 2 to https://app.api.surehub.io/api/pet/xxxxxx, No Data, No Header
2024.08.02 15:58:44 5: Katzenklappe: ReadCallback called from __ANON__
2024.08.02 15:58:44 4: Katzenklappe: Read callback: request type was get1 retry 1,
2024.08.02 15:58:44 5: Katzenklappe: Read callback: body empty
2024.08.02 15:58:44 4: Katzenklappe: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2024.08.02 15:58:44 5: Katzenklappe: GetCookies is looking for Cookies
2024.08.02 15:58:44 5: Katzenklappe: ExtractSid called, context get, num 1
2024.08.02 15:58:44 4: Katzenklappe: checking for redirects, code=401, ignore=0
2024.08.02 15:58:44 4: Katzenklappe: no redirects to handle
2024.08.02 15:58:44 5: Katzenklappe: Read callback sets LAST_REQUEST to get1
2024.08.02 15:58:44 5: Katzenklappe: CheckAuth is checking buffer with ReAuthRegex (?^:.*401.*)
2024.08.02 15:58:44 4: Katzenklappe: CheckAuth decided new authentication required
2024.08.02 15:58:44 4: Katzenklappe: Authentication still required but no retries left - did last authentication fail?
2024.08.02 15:58:44 5: Katzenklappe: ExtractReading for context get, num 1 - no individual parse definition
2024.08.02 15:58:44 5: Katzenklappe: Read starts parsing response to get1 with defined readings:
2024.08.02 15:58:44 4: Katzenklappe: Read response to get1 didn't match any Reading
2024.08.02 15:58:44 5: Katzenklappe: HandleSendQueue called from ReadCallback, qlen = 0
2024.08.02 15:58:44 5: Katzenklappe: HandleSendQueue found no usable entry in queue


Ich dachte die requestHeaderXX sind globale Werte und werden bei allen GET/SET gesendet?!

Sieht jemand viell. mein Problem?

VG+Danke
René

fireball

Habs hinbekommen, die Lösung war, bei jeden getXX auch die Header zu setzen:
get01Header01 Authorization: Bearer $sid
get01Header02 Content-Type: application/json, Accept: application/json

VG
René