我们可以使用 SAP Marketing Cloud 提供的 Contact create OData API 在第三方应用里创建 Contact 主数据.
API 地址:/sap/opu/odata/sap/CUAN_CONTACT_SRV/InteractionContacts
示例代码只有 100 多行:
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import sun.misc.BASE64Encoder;
public class SimpleContactCreator {private ConfigUtil mConfigUtil = new ConfigUtil();
HttpClient m_httpClient;
private String getBasicAuth(){final String text = mConfigUtil.getConfig("user") + ":" + mConfigUtil.getConfig("password");
BASE64Encoder encoder = new BASE64Encoder();
String credentials = "basic" + encoder.encode(text.getBytes());
return credentials;
}
private HttpClient getHttpClient() {if (this.m_httpClient == null) {this.m_httpClient = HttpClientBuilder.create().build();}
return this.m_httpClient;
}
private String getCSRFToken(){String url = mConfigUtil.getConfig("tokenurl");
System.out.println("fetch CSRF token via url:" + url);
final HttpGet get = new HttpGet(url);
get.setHeader("Authorization", getBasicAuth());
get.setHeader("Cache-Control", "no-cache");
get.setHeader("content-type", "application/json");
get.setHeader("Accept", "application/json");
get.setHeader("x-csrf-token", "fetch");
HttpResponse response;
String token = null;
try {response = getHttpClient().execute(get);
StatusLine statusLine = response.getStatusLine();
int code = statusLine.getStatusCode();
System.out.println("Status code:" + code);
System.out.println("reason:" + statusLine.getReasonPhrase());
token = response.getFirstHeader("x-csrf-token").getValue();
System.out.println("token:" + token);
} catch (ClientProtocolException e) {e.printStackTrace();
} catch (IOException | UnsupportedOperationException e) {e.printStackTrace();
}
return token;
}
public void run(String body){String token = getCSRFToken();
createContact(token, body);
}
private void createContact(String token, String body){
final HttpPost post = new HttpPost(URI.create(mConfigUtil.getConfig("contactcreateurl")));
post.setHeader("Authorization", getBasicAuth());
post.setHeader("Content-Type", "application/json");
post.setHeader("X-CSRF-Token", token);
HttpEntity entity = null;
try {entity = new StringEntity(body);
} catch (UnsupportedEncodingException e) {e.printStackTrace();
}
post.setEntity(entity);
HttpResponse response = null;
try {response = getHttpClient().execute(post);
} catch (ClientProtocolException e) {e.printStackTrace();
} catch (IOException e) {e.printStackTrace();
}
System.out.println("Response statusCode for Batch =>"
+ response.getStatusLine().getStatusCode());
}
public static void main(String[] args) {SimpleContactCreator tool = new SimpleContactCreator();
String body = "{\"IsConsumer\":true," +
"\"Filter\":{\"MarketingArea\":\"CXXGLOBAL\"}," +
"\"__metadata\":{\"type\":\"CUAN_CONTACT_SRV.InteractionContact\"}," +
"\"FirstName\":\"SAP Diablo\",\"LastName\":\"SAP Wang\",\"Country\":\"CN\"," +
"\"EMailAddress\":\"seya@sap.com\",\"YY1_WECHATID_MPS\":\"i042416\"," +
"\"YY1_FACEID_MPS\":\"d042416\"}";
tool.run(body);
}
}
上述代码里, 我硬编码了一个 Contact 的姓为 SAP Wang, 名为 SAP diablo,
执行之后, 打印出 API 消费成功的 201 代码:
硬编码的数据能够在 Marketing Cloud 里观察到:
上述源代码在我的 github 上也能看到:https://github.com/i042416/Ja…
要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”: