HttpUtils.pm - Wie kann ich eigene Header setzen?

Begonnen von Markus Bloch, 09 Januar 2014, 14:03:09

Vorheriges Thema - Nächstes Thema

Markus Bloch

Hallo zusammen,

ich habe aktuell bei Yahama-AVR mit einem besonderen Receiver-Modell (RX-V2065) Probleme beim abfragen von Daten. Der Receiver antwortet zwar mit einem 200 OK aber er schickt keine Antwortdaten. Ich glaube, dass dies mit den Header-Daten zusammenhängt die HttpUtils.pm verwendet für HTTP Anfragen.

Mit folgendem HTTP Header erhalten wir eine Antwort (Trace der Yamaha Smartphone App):

POST /YamahaRemoteControl/ctrl HTTP/1.1
Host: 192.168.2.7
User-Agent: AVcontrol/3.70 CFNetwork/548.1.4 Darwin/11.0.0
Content-Length: 93
Accept: */*
Content-Type: text/xml; charset=UTF-8
Accept-Language: de-de
Accept-Encoding: gzip, deflate
Connection: keep-alive


Mit einer HTTP Anfrage von FHEM erhalten wir zwar ein HTTP 200 OK aber keine Content Daten:

POST /YamahaRemoteControl/ctrl HTTP/1.0
Host: 192.168.2.7
Content-Length: 113
Content-Type: application/x-www-form-urlencoded


Meine Vermutung ist, dass der HTTP-Header bei diesem speziellen Modell stärker geprüft wird (Content-Type, User-Agent).

Daher ist die Frage, ob es möglich ist bei der Benutzung von HttpUtils.pm die Angabe von eigenen Header-Daten zu ermöglichen, sowie das Übersteuern von Standard-Werten (wie z.B. Content-Type)?

Vielen Dank

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Loredo

Das würde mich auch interessieren. Allerdings würde ich gerne einen anderen HTTP Response Code als 200 schicken können...
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Markus Bloch

Zitat von: Loredo am 09 Januar 2014, 14:06:49
Das würde mich auch interessieren. Allerdings würde ich gerne einen anderen HTTP Response Code als 200 schicken können...

In meinem Fall kommt der HTTP 200 OK aber vom Receiver und nicht von FHEM. Ich will bei HTTP Anfragen in Richtung Receiver via HTTPUtils.pm die Header in der Anfrage modifizieren.

Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Loredo

Das hab ich verstanden, ich wolle mich unfairerweise mit dranhängen  8)
Ich dachte mir, wir wollen beide was im Header schicken. Ich allerdings direkt über eine FHEMWEB-Extension. Dort kann man normale Header auch schon mitschicken, hilft dir aber wohl nicht bei Nutzung der normalen HttpUtils Funktionen.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

rudolfkoenig

Zitatob es möglich ist bei der Benutzung von HttpUtils.pm die Angabe von eigenen Header-Daten zu ermöglichen

Ja, mit HttpUtils_NonblockingGet/HttpUtils_BlockingGet, Hash Parameter header (String, falls mehrere Zeilen, dann mit \r\n getrennt.).

betateilchen

Hast Du mal versucht, in Zeile 181 der HttpUtils Deinen gewünschten Content-Type zu verwenden um zu sehen, ob es dann funktioniert?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Markus Bloch

Zitat von: betateilchen am 09 Januar 2014, 14:20:24
Hast Du mal versucht, in Zeile 181 der HttpUtils Deinen gewünschten Content-Type zu verwenden um zu sehen, ob es dann funktioniert?

Das Problem dabei ist, dass es sich nicht um meinen Receiver handelt, sondern um den eines anderen FHEM Users. Von daher werde ich zuerst versuchen im Yamaha-Modul die entsprechenden Header nachzuziehen.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

Markus Bloch

Zitat von: rudolfkoenig am 09 Januar 2014, 14:17:25
Ja, mit HttpUtils_NonblockingGet/HttpUtils_BlockingGet, Hash Parameter header (String, falls mehrere Zeilen, dann mit \r\n getrennt.).

Vielen Dank, Rudi. Hatte beim durchsehen der HttpUtils die relevante Zeile offenbar überlesen.
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)