// This example assumes that you are using Axis 1.4 and
// the Xerxes parser. Additionally, it requires
// pre-compiling the proxy classes by using wsdl2java.
// If you are using a different environment, update it as needed.
// Application-specific name of package.
// If you place this code in a package, invoke the code
// at the command line by typing
// java java_adCenter.MyCreateKeywords
// along with the parameters used for the credentials and developer token.
// If you choose to not place this code in a package, invoke the code
// at the command line by typing
// java MyCreateKeywords
// along with the parameters used for the credentials and developer token.
package java_adCenter;
import java.io.*;
import java.util.*;
import java.net.URL;
import com.microsoft.adapi.*;
import com.microsoft.adcenter.v6.*;
public class MyCreateKeywords
{
public static void main(String[] args)
{
// Application-specific values.
long accountId = 489;
long adGroupId = 501086322;
// The Microsoft adCenter API namespace,
// which is used in the SOAP header.
String namespace =
"https://adcenter.microsoft.com/v6";
// This example URL is for the sandbox environment.
// Update the URL as needed when using the production environment.
String url = "https://sandboxapi.adcenter.microsoft.com/Api/Advertiser/v6/CampaignManagement/CampaignManagementService.svc?wsdl";
// The following is the production environment URL.
// String url = "https://adcenterapi.microsoft.com/Api/Advertiser/v6/CampaignManagement/CampaignManagementService.svc?wsdl";
ICampaignManagementService campaignManagement = null;
CampaignManagementServiceLocator campaignServiceLocator = null;
BasicHttpBinding_ICampaignManagementServiceStub stub = null;
AddKeywordsRequest addKeywordsRequest = null;
AddKeywordsResponse addKeywordsResponse = null;
Keyword[] keywords = null;
com.microsoft.adcenter.v6.Date startDate = null, endDate = null;
try
{
if (args.length != 3)
{
// This application expects the user name, password, and
// developer token to be passed in as command-line arguments.
System.out.println("Correct usage:");
System.out.print("java MyCreateKeywords ");
System.out.println("user_name password developertoken");
System.exit(-1);
}
campaignServiceLocator = new
CampaignManagementServiceLocator();
campaignServiceLocator.setBasicHttpBinding_ICampaignManagementServiceEndpointAddress(url);
campaignManagement =
campaignServiceLocator.getBasicHttpBinding_ICampaignManagementService();
stub = (BasicHttpBinding_ICampaignManagementServiceStub)
campaignManagement;
// Assign values for the credentials and the developer token.
// args[0] is the user name.
// args[1] is the password.
// args[2] is the developer token.
// The application token is reserved for future use and
// does not need to be assigned a value.
stub.setHeader(namespace,
"ApplicationToken", "");
stub.setHeader(namespace,
"DeveloperToken", args[2]);
stub.setHeader(namespace,
"UserName", args[0]);
stub.setHeader(namespace,
"Password", args[1]);
stub.setHeader(namespace,
"CustomerAccountId", accountId);
// This example creates two keywords.
keywords = new Keyword[2];
keywords[0] = new Keyword();
keywords[1] = new Keyword();
// Specify values for the first keyword.
keywords[0].setText("mittens");
keywords[0].setBroadMatchBid(new Bid(.50));
keywords[0].setExactMatchBid(new Bid(1.50));
keywords[0].setNegativeKeywords(null);
// Specify values for the second keyword.
keywords[1].setText("gloves");
keywords[1].setBroadMatchBid(new Bid(.50));
keywords[1].setExactMatchBid(new Bid(1.50));
// Exclude certain words from allowing a match.
// For example, these ads shouldn't
// match a search for "latex gloves" because the
// campaign is only for winter hand wear.
String[] negativeKeywords = new String[]
{
"latex",
"boxing",
"softball",
"baseball"
};
keywords[1].setNegativeKeywords(negativeKeywords);
// Create the service operation request object, and then assign values.
addKeywordsRequest = new AddKeywordsRequest();
addKeywordsRequest.setAdGroupId(adGroupId);
addKeywordsRequest.setKeywords(keywords);
// Make the call to add the ads.
System.out.println(
"Calling CampaignManagement.AddKeywords");
addKeywordsResponse =
campaignManagement.addKeywords(addKeywordsRequest);
// Display the TrackingId that was returned
// in the response header.
System.out.println("Successful AddKeywords call.");
System.out.println(
"TrackingId output from response header:");
System.out.println(
stub.getResponseHeader
(
namespace,
"TrackingId")
);
// Insert a blank line to separate the text that follows.
System.out.println();
// Display the IDs for the ads that were created.
for (int i = 0; i < addKeywordsResponse.getKeywordIds().length; i++)
{
System.out.println(
String.format("Keyword %s was created for '%s'.",
addKeywordsResponse.getKeywordIds()[i],
keywords[i].getText()));
}
}
// Exception handling.
catch (EditorialApiFaultDetail fault)
{
System.out.println("EditorialApiFaultDetail exception encountered.");
System.out.println(String.format("Tracking ID: %s",
fault.getTrackingId()));
// Display editorial error information.
for (int i = 0; i < fault.getEditorialErrors().length; i++)
{
System.out.println(String.format("Editorial validation error for item at array index %s.",
fault.getEditorialErrors()[i].getIndex()));
System.out.println(String.format("\tMessage: %s",
fault.getEditorialErrors()[i].getMessage()));
System.out.println(String.format("\tErrorCode: %s",
fault.getEditorialErrors()[i].getErrorCode()));
System.out.println(String.format("\tFailed text: %s",
fault.getEditorialErrors()[i].getDisapprovedText()));
System.out.println(String.format("\tCode: %s",
fault.getEditorialErrors()[i].getCode()));
}
// Display service operation error information.
for (int i = 0; i < fault.getOperationErrors().length; i++)
{
System.out.println("Operation error encountered:");
System.out.println(String.format("\tMessage: %s",
fault.getOperationErrors()[i].getMessage()));
System.out.println(String.format("\tDetails: %s",
fault.getOperationErrors()[i].getDetails()));
System.out.println(String.format("\tErrorCode: %s",
fault.getOperationErrors()[i].getErrorCode()));
System.out.println(String.format("\tCode: %s",
fault.getOperationErrors()[i].getCode()));
}
// Display batch error information.
for (int i = 0; i < fault.getBatchErrors().length; i++)
{
System.out.println(String.format("Batch error encountered for array index %s.",
fault.getBatchErrors()[i].getIndex()));
System.out.println(String.format("\tMessage: %s",
fault.getBatchErrors()[i].getMessage()));
System.out.println(String.format("\tDetails: %s",
fault.getBatchErrors()[i].getDetails()));
System.out.println(String.format("\tErrorCode: %s",
fault.getBatchErrors()[i].getErrorCode()));
System.out.println(String.format("\tCode: %s",
fault.getBatchErrors()[i].getCode()));
}
// Exit the application or take other action.
System.exit(-1);
}
catch (AdApiFaultDetail fault)
{
System.out.println("AdApiFaultDetail exception encountered.");
System.out.println(String.format("Tracking ID: %s",
fault.getTrackingId()));
// Display API error information.
for (int i = 0; i < fault.getErrors().length; i++)
{
System.out.println("Error encountered:");
System.out.println(String.format("\tMessage: %s",
fault.getErrors()[i].getMessage()));
System.out.println(String.format("\tDetail: %s",
fault.getErrors()[i].getDetail()));
System.out.println(String.format("\tErrorCode: %s",
fault.getErrors()[i].getErrorCode()));
System.out.println(String.format("\tCode: %s",
fault.getErrors()[i].getCode()));
}
// Exit the application or take other action.
System.exit(-1);
}
// Capture exceptions on the client that are unrelated to
// the adCenter API.
catch (Exception e)
{
System.out.print("Error encountered: ");
e.printStackTrace();
// Exit the application or take other action.
System.exit(-1);
}
}
}