Ich verwende die Writer-Ressource MailchimpMarketingApiClient(), um der Website ein einfaches Mailchimp-Abonnementformular hinzuzufügen. Das Hinzufügen eines Benutzers scheint gut zu funktionieren, aber wenn ich versuche, einen bereits vorhandenen Benutzer hinzuzufügen, erwarte ich nur eine nette JSON-Antwort, damit ich diesen Fehler abfangen und dem Benutzer anzeigen kann, aber ich erhalte auf der Clientseite die folgende GuzzleHttpException Ausnahme:
Client error: `POST https://us10.api.mailchimp.com/3.0/lists/xxxxxxxxxx/members` resulted in a `400 Bad Request` response: {"type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/","title":"Member Exists","status" (truncated...)
Die Dokumentation scheint nicht wirklich viel zu erkl?ren, ich muss auch den richtigen Weg finden, um Fehler bei einem Stapelüberlauf abzufangen, weil die Mailchimps-Dokumentation... fehlt! Hier ist der Code:
try { $response = $mailchimp->lists->addListMember($this->settings_helper->get('mailchimp_list_id'), [ "email_address" => $form->get_field_value('email'), "status" => "subscribed", "merge_fields" => [ "FNAME" => $first_name, "LNAME" => $last_name ] ]); if ($response->getId()) { $this->add_json_success($this->settings_helper->get('mailchimp_success_message')); } } catch (MailchimpMarketing\ApiException $e) { $errors[] = $e->getMessage(); } catch (ClientErrorResponseException $e) { $errors[] = $e->getMessage(); } catch (GuzzleHttp\Exception\ClientException $e) { $errors[] = $e->getMessage(); }
Dies ist die Mailchimp-Dokumentation, die ich verwende: https://mailchimp.com/developer/api/marketing/list-members/add-member-to-list/
Ich kann den 400-Fehlercode abfangen und einen benutzerdefinierten Fehler ausgeben, aber ich bin mir sicher, dass ich etwas falsch mache, um eine so nutzlose Antwort von der Mailchimp-API zu erhalten?
Vielen Dank, Andy, für all die Hilfe.
我遇到了同樣的問題,因此我最終通過將最后一個 catch 子句更改為以下內(nèi)容來指示錯誤消息以查看整個錯誤:
catch (GuzzleHttp\Exception\ClientException $e) { echo '' . var_export($e->getResponse()->getBody()->getContents()).''; $errors[] = $e->getMessage(); }
這揭示了以下糟糕的錯誤,到目前為止該錯誤已被截斷:
{ "type":"http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/", "title":"Invalid Resource", "status":400, "detail":"Isabell_Murazik@example.com looks fake or invalid, please enter a real email address.", "instance":"fcc1d762-2475-40a6-bc7f-4ac7f3fb7902" }
所以,我的問題是 @example.com
看起來是假的或無效...
嘗試不同的電子郵件,甚至 @test.com
也有效。
我不能向您保證這也會是您的問題,但檢查錯誤詳細信息絕對是良好的第一步!