Autor Thema: [GELÖST] HttpUtils_NonblockingGet und $param->{url} fester String ...  (Gelesen 907 mal)

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25735
Ich habe das ganze Modul auf cURL und SubProcess umgestellt.

Ich danke allen für Ihre Unterstützung.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22646
Um Probleme mit HttpUtils_NonblockingGet auszuschliessen habe ich
- einen minimalen Upload-Server gebastelt, was hinter einem Apache auf Daten wartet
- es mit curl -T getestet
- danach mit folgender Funktion aus 99_myUtils.pm HttpUtils getestet (45MB .mp3):
sub
DoUpload($$;$$)
{
  my ($url,$fname,$user,$pw)=@_;
  my $data;
  {
    local $/= undef;
    open(FH,$fname) || return "$fname:$!";
    $data = <FH>;
    close(FH);
  }
  HttpUtils_NonblockingGet({
    url=>$url, timeout=>60, data=>$data,
    user=>$user, pwd=>$pw, callback=>sub() {
      my ($hash, $err, $ret) = @_;
      Log 1, "Upload finished, Err:$err Response-Length:".length($ret);
    }
  });
  return "Upload started";
}
=> Ich sehe keine Probleme, die MD5-Summen sind identisch.

Das heisst nicht, dass ich gegen eine curl basierte Loesung bin, ich wollte nur sicher gehen, dass es sich nicht um ein HttpUtils Problem handelt.

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25735
Um Probleme mit HttpUtils_NonblockingGet auszuschliessen habe ich
- einen minimalen Upload-Server gebastelt, was hinter einem Apache auf Daten wartet
- es mit curl -T getestet
- danach mit folgender Funktion aus 99_myUtils.pm HttpUtils getestet (45MB .mp3):
sub
DoUpload($$;$$)
{
  my ($url,$fname,$user,$pw)=@_;
  my $data;
  {
    local $/= undef;
    open(FH,$fname) || return "$fname:$!";
    $data = <FH>;
    close(FH);
  }
  HttpUtils_NonblockingGet({
    url=>$url, timeout=>60, data=>$data,
    user=>$user, pwd=>$pw, callback=>sub() {
      my ($hash, $err, $ret) = @_;
      Log 1, "Upload finished, Err:$err Response-Length:".length($ret);
    }
  });
  return "Upload started";
}
=> Ich sehe keine Probleme, die MD5-Summen sind identisch.

Das heisst nicht, dass ich gegen eine curl basierte Loesung bin, ich wollte nur sicher gehen, dass es sich nicht um ein HttpUtils Problem handelt.

Hallo Rudi,

Erstmal vielen lieben Dank das Du da noch Energie rein steckst. Das komische ist ja das ich das ganze über eine myUtils auch machen kann und da geht es.
Es geht auch wenn ich die URL fest codiere und nicht mit variablen versehe. Wie gesagt alles total komisch.
Ich habe sogar meine myUtils als package gemacht so wie das Modul, auch dann geht alles noch. Ist total komisch. Aber ich denke mir auch 16 Stunden Energie sind genug. Ich behaupte nicht das der Fehler an der HttpUtils_NonblockingGet liegt, es kann auch sein das ich einen Fehler mache oder es an Nextcloud liegt. So muss ich bei Nextcloud explizit PUT als Method nehmen damit es geht.
Ich schaue mal wie es sich weiter entwickelt. Ich werde eine Supportunterstützung mit autoupload für Logfile für ASC machen und dann werden wir sehen ob es da bei reinen Textfiles auch noch Probleme gibt. Da will ich auf jeden Fall wieder HttpUtils_NonblockingGet nehmen.


Grüße
Marko
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 22646
Zitat
Es geht auch wenn ich die URL fest codiere und nicht mit variablen versehe.
Ich vermute, dass einer der verwendeten Variablen Wide-Character enthaelt.

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 25735
Hatte ich eigentlich soweit überprüft. Habe extra die Variable und nur eine geänderte selbst mit String gefüllt.
Was mir vorhin noch ein viel wäre ein chomp() auf das <FD> zu machen. Aber nun ist zu spät
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
My FHEM Git: https://git.cooltux.net/FHEM/
Mein Dokuwiki:
https://www.cooltux.net