mit dem angehängten patch ist es möglich $hash->{header} auch als hash zu übergeben. das ist vor allem bei dynamische headern praktisch.
In letzter Zeit wird HttpUtils.pm ja richtig hart rangenommen. ::)
Zu deinem Patch: So funktioniert das leider bei Digest-Authentifikation nicht.
bitte beachte ab Zeile 434 im aktuellen SVN:
# if servers requests digest authentication
if($code==401 && defined($hash->{auth}) &&
!($hash->{header} && $hash->{header} =~ /^Authorization:\s*Digest/mi) &&
$hash->{httpheader} =~ /^WWW-Authenticate:\s*Digest\s*(.+?)\s*$/mi) {
$hash->{header} .= "\r\n".
HttpUtils_DigestHeader($hash, $1) if($hash->{header});
$hash->{header} = HttpUtils_DigestHeader($hash, $1) if(!$hash->{header});
# Request the URL with the Digest response
if($hash->{callback}) {
HttpUtils_NonblockingGet($hash);
return ("", "", 1);
} else {
return HttpUtils_BlockingGet($hash);
}
Viele Grüße
Markus
die einfache variante wäre den aus dem hash erzeugten string nach $hash->{header} zurück zu schreiben. wie in der hier angehängten variante.
hat jemand eine elegantere idee?
gruss
andre
Zitat von: justme1968 am 03 November 2015, 18:39:56
hat jemand eine elegantere idee?
ich würde es so machen (ungetestet):
if(defined($hash->{header})) {
if( ref($hash->{header}) eq 'HASH' ) {
$hash->{header} = join("\r\n", map(($_.': '.$hash->{header}{$_}), keys($hash->{header})));
}
}
Gruß
Markus
ja. natürlich. gute idee. der else zwei ist überflüssig und es wird ja nichts mehr mit den werten gemacht.
Wenn ihr fertig seid, biotte melden :)
fertig :)
die version von markus ist die ist gut:Index: HttpUtils.pm
===================================================================
--- HttpUtils.pm (revision 9766)
+++ HttpUtils.pm (working copy)
@@ -240,6 +240,12 @@
}
}
+ if(defined($hash->{header})) {
+ if( ref($hash->{header}) eq 'HASH' ) {
+ $hash->{header} = join("\r\n", map(($_.': '.$hash->{header}{$_}), keys($hash->{header})));
+ }
+ }
+
$hash->{host} =~ s/:.*//;
my $method = $hash->{method};
$method = ($data ? "POST" : "GET") if( !$method );
Eingecheckt.
es gibt perl versionen die mögen diese version nicht. so sollte es besser sein:
Index: HttpUtils.pm
===================================================================
--- HttpUtils.pm (revision 9780)
+++ HttpUtils.pm (working copy)
@@ -243,7 +243,7 @@
if(defined($hash->{header})) {
if( ref($hash->{header}) eq 'HASH' ) {
$hash->{header} = join("\r\n",
- map(($_.': '.$hash->{header}{$_}), keys($hash->{header})));
+ map(($_.': '.$hash->{header}{$_}), keys(%{$hash->{header}})));
}
}
Hat Martin schon eingecheckt, ich hoffe noch, dass aus versehen.