2016-06-17 16 views
0

Ich entwickle Code, der eine E-Mail von unserer Website durch InfusionSoft API & XMLRPC sendet.Keine Methode passende Argumente: java.lang.String, java.util.HashMap XMLRPC infusionSoft

Hier mein Code:

$email = $user_rec['email']; 
    $contactID=$user_rec['client_infusionid'];  
    echo $contactID; 

    $Subject = 'Your reset password request at GIC Deal Finders'; 

    $From = $this->GetFromAddress(); 

    $link = 'http://dashboard.gicdealfinders.info/resetpwd.php?email='. 
      urlencode($email).'&code='. 
      urlencode($this->GetResetPasswordCode($email)); 

    $htmlBody ='Hello '.$user_rec["name"].'<br/><br/>'. 
    'There was a request to reset your password at GIC Deal Finders<br/>'. 
    'Please click the link below to complete the request: <br/><a href="'.$link.'">'.$link.'</a><br/><br/>'. 
    '<br/>'. 
    'Regards,<br/>'. 
    'Toyin Dawodu, MBA<br/>'. 
    'Founder and Chief Relationship Officer'; 

    $clients = new xmlrpc_client("https://ze214.infusionsoft.com/api/xmlrpc"); 
    $clients->return_type = "phpvals"; 
    $clients->setSSLVerifyPeer(FALSE); 
    ###Build a Key-Value Array to store a contact### 
    $emailI = array(
    'contactList' => $contactID, 
    'fromAddress' => $From, 
    'toAddress' => $email, 
    'ccAddresses' => '[email protected]', 
    'bccAddresses' =>'[email protected]', 
    'contentType' => 'HTML', 
    'subject' => $Subject, 
    'htmlBody' => $htmlBody, 
    'textBody' => 'test'); 
    //$check=$myApp->sendEmail($clist,"[email protected]","~Contact.Email~", "","","Text","Test Subject","","This is the body"); 

    ###Set up the call### 
     $calls = new xmlrpcmsg("APIEmailService.sendEmail", array(
     php_xmlrpc_encode($this->infusion_api),   #The encrypted API key 
     php_xmlrpc_encode($emailI)  #The contact array 

     )); 

     ###Send the call### 
     $results = $clients->send($calls); 
     //$conID = $results->value(); 
     /*###Check the returned value to see if it was successful and set it to a variable/display the results###*/ 
     if(!$results->faultCode()) { 
      return true; 
      } else { 
       print $results->faultCode() . "<BR>"; 
       print $results->faultString() . "<BR>"; 
      return false; 
      } 

Das erfasste Fehler zeigt:

-1 
No method matching arguments: java.lang.String, java.util.HashMap 

Kann jemand meinen Code überprüfen und zeigen Sie mir einen Weg, um es zu beheben?

Antwort

0

Wie der zurückgegebene Fehler sagt, werden die falschen Parameter an die Infusions- API gesendet.

Die Liste der zulässigen Parameter finden Sie unter .

Zunächst einmal müssen Sie Ihre API-Schlüssel als ersten Wert in $ emailI Array hinzuzufügen.

Auch erwartet Infusion API der zweite Parameter eine Liste der IDs Kontakt zu sein, die der zweite Parameter $ contactID bedeutet müssen von php Seite als Array gesendet werden.

Der folgende Code zeigt die Korrekturen:

$emailI = array(
    'yourApiKey', 
    array($contactID), 
    $From, 
    $email, 
    '[email protected]', 
    '[email protected]', 
    'HTML', 
    $Subject, 
    $htmlBody, 
    'test' 
); 
$calls = new xmlrpcmsg(
    "APIEmailService.sendEmail", 
    array_map('php_xmlrpc_encode', $emailI) 
); 

Bitte beachten Sie auch feststellen, dass, wenn Sie mehr haben, dann nur ein oder zwei Infusion API-Aufrufe im Code, ist es ratsam, API Helper Libraries zu verwenden. Möglicherweise finden Sie auch einen anderen Wrapper für Infusionsoft API unter github.com, wenn aktuelle offizielle Helper-Bibliotheken nicht für Sie arbeiten.

+0

### den Anruf einrichten ### $ Anrufe = new xmlrpcmsg ("APIEmailService.sendEmail", array ( php_xmlrpc_encode ($ this-> infusion_api), verschlüsselt #The API-Schlüssel php_xmlrpc_encode ($ emailI) # Das Kontaktfeld )); in meinem Code php_xmlrpc_encode ($ this-> infusion_api) speichern Sie den API-Schlüssel –

+0

Ja, ich habe es gesehen. Meine Antwort behebt Ihre Probleme. Verwenden Sie Ihr $ this-> infusion_api anstelle von 'yourApiKey' – yuga

+0

Ich werde es überprüfen und Sie wissen lassen –