2016-05-07 3 views
-2

Dies ist das Code-Snippet in Zeile 461, die Badarg Fehler gibt, bitte helfen Sie mir, diesen Fehler zu lösen Jungs.schlechtes Argument im Aufruf von crypto: aes_cfb_128_crypt

ejabberd_odbc:escape(base64:encode(crypto:aes_cfb_128_encrypt(<<"abcdefghabcdefgh">>, <<"12345678abcdefgh">>, xml:element_to_binary(NewPacket)))), 

Log:

schlechtes Argument im Aufruf von Krypto: aes_cfb_128_crypt (< < "abcdefghabcdefgh" >>, < < "12345678abcdefgh" >>, < < „>, true) in mod_offline: '-store_offline_msg/6-fun-2 -'/2 line 225

+0

Der Code, den Sie gaben, ist nicht einmal eine ganze Zeile, 'Listen: Flatmap' ist nicht einmal geschlossen. Was ist XML? Was ist die Funktion 'str: str'? Viele Details fehlen, um helfen zu können. –

+0

Wahrscheinlich möchten Sie auch den Fragecode für diese Funktion hinzufügen: '{file," src/mod_offline.erl "}, {line, 462}' – Amiramix

Antwort

1

Eines der Dinge, die ich an funktionalen Sprachen mag, ist, dass es im Allgemeinen einfacher ist, Fehler in einer kontrollierten Umgebung zu reproduzieren ems wie

base64:decode(XML) 

ist der Anruf, ist andernfalls, so sollten Sie

io:format("XML=~p~n", [XML]), 
base64:decode(XML) 

die erste Zeile aus dem Inhalt von XML in Erlang-Syntax druckt schreiben, und die zweite Zeile wird fehlschlagen, wenn Sie erhalten die schlechte Eingabe.

Sobald Sie die Zeichenfolge sehen, die Sie versuchen zu dekodieren, wird das Problem wahrscheinlich offensichtlich sein (es ist keine Zeichenfolge oder es ist keine Base64-Zeichenfolge). Wenn es ist eine korrekt codierte Base64-Zeichenfolge, dann können Sie dieses Problem als eine StackOverflow-Frage buchen und eine nützlichere Antwort erhalten.

+0

Danke Nathaniel. – Nitin

Verwandte Themen