FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Markus Bloch am 09 Januar 2014, 14:03:09

Titel: HttpUtils.pm - Wie kann ich eigene Header setzen?
Beitrag von: Markus Bloch am 09 Januar 2014, 14:03:09
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
Titel: Antw:HttpUtils.pm - Wie kann ich eigene Header setzen?
Beitrag 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...
Titel: Antw:HttpUtils.pm - Wie kann ich eigene Header setzen?
Beitrag von: Markus Bloch am 09 Januar 2014, 14:10:26
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.

Titel: Antw:HttpUtils.pm - Wie kann ich eigene Header setzen?
Beitrag von: Loredo am 09 Januar 2014, 14:14:59
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.
Titel: Antw:HttpUtils.pm - Wie kann ich eigene Header setzen?
Beitrag von: rudolfkoenig am 09 Januar 2014, 14:17:25
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.).
Titel: Antw:HttpUtils.pm - Wie kann ich eigene Header setzen?
Beitrag 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?
Titel: Antw:HttpUtils.pm - Wie kann ich eigene Header setzen?
Beitrag von: Markus Bloch am 09 Januar 2014, 20:08:25
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.
Titel: Antw:HttpUtils.pm - Wie kann ich eigene Header setzen?
Beitrag von: Markus Bloch am 09 Januar 2014, 20:26:26
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.