1

C# の dotMailer API を理解しようとしています。

API のバージョン 1.5 を参照する dotMailer API を使用する機能を格納する予定のクラス ライブラリがあります。このWSDLからセットアップされたサービス参照もあります。

私は C# の例を調べていましたが、すでに困惑しています。以下はhereから直接引っ張ってきました

C#での使用例

/// <summary>
/// Adds a contact to an address book
/// </summary>
public void AddContactToAddressBook() 
{
    const string username = "apiuser-XXXXXXXXXXXX@apiconnector.com";
    const string password = "password";
    const int addressBookId = 1;  // ID of the target address book

    Console.WriteLine("AddContactToAddressBook");
    Console.WriteLine("-----------------------");

    // Get an instance to the web reference
    com.apiconnector.API api = new com.apiconnector.API();

    try
    {
        // we need a new contact
        com.apiconnector.APIContact contact = new com.apiconnector.APIContact();

        // populate the contact
        contact.AudienceType = com.apiconnector.ContactAudienceTypes.B2B;

        // populate the data fields
        contact.DataFields = new com.apiconnector.ContactDataFields();
        contact.DataFields.Keys = new string[3];
        contact.DataFields.Values = new object[3];

        contact.DataFields.Keys[0] = "FIRSTNAME";
        contact.DataFields.Values[0] = "John";
        contact.DataFields.Keys[1] = "LASTNAME";
        contact.DataFields.Values[1] = "Smith";
        contact.DataFields.Keys[2] = "POSTCODE";
        contact.DataFields.Values[2] = "IP4 1XU";


        // email address
        contact.Email = "joe.smith@example.com";

        contact.EmailType =  com.apiconnector.ContactEmailTypes.PlainText;
        contact.Notes = "This is a test only email";
        contact.OptInType = com.apiconnector.ContactOptInTypes.Single;

        // This method will create the contact required if it doesn't already exist within the dotMailer system,
        // so we don't have to call CreateContact as a prerequisite.
        // 
        // This method will also overwrite an existing contact, with the information provided here.
        //
        // This method will fail if you try to add a contact to the "Test" or "All Contacts" address books.
        //
        com.apiconnector.APIContact newContact = api.AddContactToAddressBook(username, password, contact, addressBookId);

        // Did we get something back from the API ?
        if (newContact != null)
        {
            Console.WriteLine("Contact added to address book {0} -> {1}", newContact.ID, addressBookId);
        }
    }
    catch (SoapException ex)  // catch any soap issues/errors from the web service
    {
        Console.WriteLine("Error -> {0}", ex.Message);                
    }

    Console.WriteLine();
}

私の問題は、次の行が解決しないことです。

com.apiconnector.API api = new com.apiconnector.API();

dotMailer.Sdk.com.apiconnectorの名前空間を調べましたAPIが、存在しないので、どこにありますか?

何か不足していますか?

4

1 に答える 1

1

wsdl をサービス参照として追加します。以下の例では、これを「ServiceReference1」と呼んでいます (これがデフォルトであり、怠け者だったためです)。次に、宣言に問題がある「api」の代わりに、APISoapClient (私はクライアントと呼んでいます) への参照を使用します。

すべてが正常にコンパイルされます。実行するつもりはありません。ランダムなコード スニペットがサーバーにどのような悪ふざけを引き起こすか分からないからです。あなたを正しい方向に向けるべきですか?

using WindowsFormsApplication1.ServiceReference1;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        const string username = "apiuser-XXXXXXXXXXXX@apiconnector.com";
        const string password = "password";
        const int addressBookId = 1;  // ID of the target address book


        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            AddContactToAddressBook();
        }

        private void AddContactToAddressBook()
        {
            using (ServiceReference1.APISoapClient Client = new ServiceReference1.APISoapClient())
            {
                APIContact Contact = new APIContact();
                Contact.AudienceType = ContactAudienceTypes.B2B;

                APIContact NewContact = Client.AddContactToAddressBook(username, password, Contact, addressBookId); // etc. etc.



            }
        }
    }
}
于 2013-08-02T15:11:43.187 に答える