Probleme mit api_createRecipient

PHP Newsletter Software/Script und E-Mail-Marketing Software SuperWebMailer

Moderator: mirko

Antworten
Benutzeravatar
mirko
Beiträge: 23082
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Probleme mit api_createRecipient

Beitrag von mirko »

Habe ich getestet mit nginx taucht der Fehler auf, mit reinem httpd/apache kommt eine ordentliche Fehlermeldung, wird ein Fehler im nusoap sein. Muss ich mal schauen ob es ein Update oder Bugfix für nusoap gibt.
Benutzeravatar
FUN-DIVER
Beiträge: 272
Registriert: 07.04.2020, 10:29
Wohnort: Möhrendorf

Re: Probleme mit api_createRecipient

Beitrag von FUN-DIVER »

Wenn ich dein code Beispiel in das PHP script übernehme, meldet es die ID des angelegten Empfängers zurück. Soweit o.k.

Wenn ich aber deine Fehlermeldung reproduzieren will und die beiden letzten Parameter rauslösche, also

Code: Alles auswählen

$params = array("apiMailingListId" => 5,
"apiData" => array(
"u_EMail" => "m.test3@fundiverev.de",
"u_LastName" => "Test3",
"u_FirstName" => "fgfg",
"u_Gender" => "m",
"u_MessengerMSN" => "2021-05-20", #Datum Austritt
"u_MessengerICQ" =>"2019-02-25", #Datum Eintritt
"u_CustomerNo" => 111, #Mitgliedsnummer
"u_UserFieldString1" =>"PROBEMITGLIED", #Mitgliedsstatus
"u_UserFieldString3" =>""), #Mitgliedsstatus add
"apiarrayGroupsIds" => array() #IDs der Gruppenzuordnung
);
verwende, dann kommt bei mir trotzdem der Fehler:
Error.png
Error.png (10.9 KiB) 663 mal betrachtet
Benutzeravatar
mirko
Beiträge: 23082
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Probleme mit api_createRecipient

Beitrag von mirko »

Nein da kommt

Code: Alles auswählen

Fatal error:  Uncaught ArgumentCountError: Too few arguments to function api_Recipients::api_createRecipient(), 3 passed in D:\xampp\htdocs\swm\api\nusoap\lib\nusoap.php on line 4105 and exactly 5 expected in D:\xampp\htdocs\swm\api\api_recipients.php:49
Stack trace:
#0 D:\xampp\htdocs\swm\api\nusoap\lib\nusoap.php(4105): api_Recipients->api_createRecipient(5, Array, Array)
#1 D:\xampp\htdocs\swm\api\nusoap\lib\nusoap.php(3736): nusoap_server->invoke_method()
#2 D:\xampp\htdocs\swm\api\api.php(113): nusoap_server->service('<?xml version="...')
#3 {main}
  thrown in D:\xampp\htdocs\swm\api\api_recipients.php on line 49


so angeben

Code: Alles auswählen

$params = array("apiMailingListId" => 5,
"apiData" => array(
"u_EMail" => "m.test3@fundiverev.de",
"u_LastName" => "Test3",
"u_FirstName" => "fgfg",
"u_Gender" => "m",
"u_MessengerMSN" => "2021-05-20", #Datum Austritt
"u_MessengerICQ" =>"2019-02-25", #Datum Eintritt
"u_CustomerNo" => 111, #Mitgliedsnummer
"u_UserFieldString1" =>"PROBEMITGLIED", #Mitgliedsstatus
"u_UserFieldString3" =>""), #Mitgliedsstatus add
"apiarrayGroupsIds" => array(), #IDs der Gruppenzuordnung
"apiUseDoubleOptIn" => false,
"apiFormId" => 0
);
Benutzeravatar
FUN-DIVER
Beiträge: 272
Registriert: 07.04.2020, 10:29
Wohnort: Möhrendorf

Re: Probleme mit api_createRecipient

Beitrag von FUN-DIVER »

Wenn ich verwende:
$params = array("apiMailingListId" => 5,
"apiData" => array(
"u_EMail" => "m.test3@fundiverev.de",
"u_LastName" => "Test3",
"u_FirstName" => "fgfg",
"u_Gender" => "m",
"u_MessengerMSN" => "2021-05-20", #Datum Austritt
"u_MessengerICQ" =>"2019-02-25", #Datum Eintritt
"u_CustomerNo" => 111, #Mitgliedsnummer
"u_UserFieldString1" =>"PROBEMITGLIED", #Mitgliedsstatus
"u_UserFieldString3" =>""), #Mitgliedsstatus add
"apiarrayGroupsIds" => array()); #IDs der Gruppenzuordnung

$result = $client->call('api_Recipients.api_createRecipient', $params, '', '', false, true);


kommt bei mir die Fehlermeldung
Error
HTTP Error: no data present after HTTP headers

und nicht die von dir angegebene.
Benutzeravatar
mirko
Beiträge: 23082
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Probleme mit api_createRecipient

Beitrag von mirko »

Es müssen ALLE Parameter angegeben werden, kein Parameter ist optional. Gibt man Parameter nicht an, gibt es eine Fehlermeldung, die man auswerten muss!!

Beispiel

Code: Alles auswählen

$params = array("apiMailingListId" => 1, "apiData" => array( "u_EMail" => "webmaster@johndoe.com", "u_LastName" => "Doe", "u_FirstName" => "John" ), "apiarrayGroupsIds" => array());
$result = $client->call('api_Recipients.api_createRecipient', $params, '', '', false, true);
Es fehlt "apiUseDoubleOptIn" => false, "apiFormId" => 0, Ergebnis wenn man den Fehler auswertet:

Code: Alles auswählen

Fatal error:  Uncaught ArgumentCountError: Too few arguments to function api_Recipients::api_createRecipient(), 3 passed in D:\xampp\htdocs\swm\api\nusoap\lib\nusoap.php on line 4105 and exactly 5 expected in D:\xampp\htdocs\swm\api\api_recipients.php:49
Stack trace:

usw.

Benutzeravatar
FUN-DIVER
Beiträge: 272
Registriert: 07.04.2020, 10:29
Wohnort: Möhrendorf

Re: Probleme mit api_createRecipient

Beitrag von FUN-DIVER »

wie ist die Syntaxprüfung für e-Mail Adressen?
Wir haben verwendet:
"u_EMail" => "stephan-st@gmx.de"
"apiUseDoubleOptIn" => false
"apiFormId" => 0

Was ist daran falsch?
Warum wird bei fehlender "apiUseDoubleOptIn" => false Angabe keine Fehlermeldung zurückgegeben?
Benutzeravatar
mirko
Beiträge: 23082
Registriert: 25.11.2001, 15:14
Wohnort: Leipzig
Kontaktdaten:

Re: Probleme mit api_createRecipient

Beitrag von mirko »

"u_EMail must contain a valid email address." wird ausgegeben, wenn

apiData[u_EMail] leer/nicht gesetzt ist

oder

die Syntaxprüfung der E-Mail-Adresse ist fehlgeschlagen

apiUseDoubleOptIn und apiFormId muss übergeben werden, sonst gibt es einen Fehler wegen der fehlenden Parameter.
Benutzeravatar
FUN-DIVER
Beiträge: 272
Registriert: 07.04.2020, 10:29
Wohnort: Möhrendorf

Probleme mit api_createRecipient

Beitrag von FUN-DIVER »

Wir versuchen derzeit mit einem CRON-Job Script über API Befehle Einträge in unserer Mitglieds-Empfängerliste mit einer externen DB zu synchronisieren.

Der API Aufruf api_Recipients.api_editRecipient zum Aktualisieren eines vorhandenen Eintrags funktioniert ohne Fehler.

Wenn wir jedoch einen neuen Eintrag über api_Recipients.api_createRecipient vornehmen wollen, erhalten wir immer die Fehlermeldung (Faultcode=1 ): "Superwebmailer - Error: u_EMail must contain a valid email address."

Die verwendete e-Mail Adresse ist korrekt und identisch zu der die wir beim Update verwendet haben (die Liste erlaubt doppelte Einträge).
Die Fehlermeldung scheint mir irreführend, denn sie weist nicht auf das eigentliche Problem hin.

Die Zusammenstellung des für die API Befehlsparameter nötigen "apiData" Arrays mit den Feldinhalten ist in beiden Fällen identisch! Ein print_r($params); gibt in beiden Fällen für das apiData Array gleiche Inhalte an.

Auffällig und noch unerklärlicher ist, wenn wir im api_Recipients.api_createRecipient den Parameter "apiUseDoubleOptIn" => false, weglassen, dann wird über $result keine Rückmeldung gegeben, weder die neue ID (bei Erfolg), noch eine Fehlermeldung. Der Datensatz wird nicht eingetragen!
Wir wissen nicht, woran das liegen kann.
Antworten