Mailjet API v3 更新
Mailjet API v3 update
关于与 recommended v3 library 一起使用的 Mailjet API,我有一个严重的问题。
当我第一次尝试更新时,我能够没有错误地这样做,但是当我再次尝试这样做时,我得到了 NullPointerException
。尽管如此,它确实更新了 Mailjet 服务器部分中的统计数据。
我得到的 HTTP 响应也是 HTTP/1.1 500 Internal Server Error
使用代码:
thisUser=cl.createCall(User.Update).identifiedBy(UserProperty.ID, **myUniqueID**).property(UserProperty.USERNAME, propertyValue).execute();
欢迎任何想法。
评论后好了,这里是函数:
@Path("/userUpdate/{propertyName}/{propertyValue}")
@GET
public Response userUpdate(@PathParam("propertyName") String propertyName, @PathParam("propertyValue") String propertyValue) throws ClientProtocolException, IOException{
MailJetApiClient cl=null;
User thisUser=null;
Response resp=null;
StringEntity stringEntity = null;
try {
cl = MailjetUsersRest.createClient();
} catch (MailJetClientConfigurationException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
try {
thisUser=cl.createCall(User.Get).identifiedBy(UserProperty.ID, ___MY_UNIQUE_ID___).execute();
} catch (MailJetApiCallException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String email = thisUser.getEmail();
String lastip = thisUser.getLastIp();
Date lastlogin = thisUser.getLastLoginAt();
String local = thisUser.getLocale();
String timezone = thisUser.getTimezone();
Date warned = thisUser.getWarnedRatelimitAt();
try {
cl = MailjetUsersRest.createClient();
switch(propertyName){
case "Username":
thisUser=cl.createCall(User.Update).identifiedBy(UserProperty.ID, ___MY_UNIQUE_ID___).property(UserProperty.USERNAME, propertyValue).execute();
resp = Response.status(200).entity(thisUser).build();
break;
default:
System.out.println("Invalid propertyName.");
break;
}
} catch (MailJetClientConfigurationException | MailJetApiCallException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return resp;
}
首先感谢您使用Mailjet!
经过一些测试,我无法重现您的问题。您会在下面找到我使用的代码。
不过强烈建议大家支持开工单here.
一个工作代码
请注意,在每次调用之前重建客户端是不必要的,而且被认为是一种不好的做法。
// Build a Mailjet client config
MailJetClientConfiguration config;
config = new MailJetClientConfiguration()
.setBaseUrl("https://api.mailjet.com/v3/REST/")
.setDefaultApiKey(System.getenv("MJ_PROD_PUBLIC"))
.setDefaultSecretKey(System.getenv("MJ_PROD_PRIVATE"));
// Build a Mailjet client
MailJetApiClient client = config.buildClient();
// Your code (adapted to my environment, ie no 'Response' object
// and no client factory.)
User thisUser = null;
try
{
// Note that the 'L' in the 'identifiedBy' value fi is necessary
thisUser = client
.createCall(User.Get)
.identifiedBy(UserProperty.ID, /*Our user's ID*/L)
.execute();
}
catch (MailJetApiCallException e2)
{
e2.printStackTrace();
}
String email = thisUser.getEmail();
String lastip = thisUser.getLastIp();
Date lastlogin = thisUser.getLastLoginAt();
String local = thisUser.getLocale();
String timezone = thisUser.getTimezone();
Date warned = thisUser.getWarnedRatelimitAt();
try
{
thisUser = client
.createCall(User.Update)
.identifiedBy(UserProperty.ID, /*Our user's ID*/L)
.property(UserProperty.USERNAME, "DevRel Team Mailjet")
.execute();
}
catch (MailJetApiCallException e)
{
e.printStackTrace();
}
复制粘贴最后一点(更新过程)以便更新调用执行两次(当然没有相同的新用户名)不会抛出任何错误,当然也不会出现 NullPointerException
或500 HTTP 错误代码。
用户名也相应更改。
是的,如上所述,请联系我们的支持人员 here。这将使我们能够更好地帮助您。
如果这个答案让您满意,请不要忘记接受并点赞,这样其他遇到类似问题的人就会知道这对您有帮助:-)
关于与 recommended v3 library 一起使用的 Mailjet API,我有一个严重的问题。
当我第一次尝试更新时,我能够没有错误地这样做,但是当我再次尝试这样做时,我得到了 NullPointerException
。尽管如此,它确实更新了 Mailjet 服务器部分中的统计数据。
我得到的 HTTP 响应也是 HTTP/1.1 500 Internal Server Error
使用代码:
thisUser=cl.createCall(User.Update).identifiedBy(UserProperty.ID, **myUniqueID**).property(UserProperty.USERNAME, propertyValue).execute();
欢迎任何想法。
评论后好了,这里是函数:
@Path("/userUpdate/{propertyName}/{propertyValue}")
@GET
public Response userUpdate(@PathParam("propertyName") String propertyName, @PathParam("propertyValue") String propertyValue) throws ClientProtocolException, IOException{
MailJetApiClient cl=null;
User thisUser=null;
Response resp=null;
StringEntity stringEntity = null;
try {
cl = MailjetUsersRest.createClient();
} catch (MailJetClientConfigurationException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
try {
thisUser=cl.createCall(User.Get).identifiedBy(UserProperty.ID, ___MY_UNIQUE_ID___).execute();
} catch (MailJetApiCallException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
String email = thisUser.getEmail();
String lastip = thisUser.getLastIp();
Date lastlogin = thisUser.getLastLoginAt();
String local = thisUser.getLocale();
String timezone = thisUser.getTimezone();
Date warned = thisUser.getWarnedRatelimitAt();
try {
cl = MailjetUsersRest.createClient();
switch(propertyName){
case "Username":
thisUser=cl.createCall(User.Update).identifiedBy(UserProperty.ID, ___MY_UNIQUE_ID___).property(UserProperty.USERNAME, propertyValue).execute();
resp = Response.status(200).entity(thisUser).build();
break;
default:
System.out.println("Invalid propertyName.");
break;
}
} catch (MailJetClientConfigurationException | MailJetApiCallException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return resp;
}
首先感谢您使用Mailjet!
经过一些测试,我无法重现您的问题。您会在下面找到我使用的代码。
不过强烈建议大家支持开工单here.
一个工作代码
请注意,在每次调用之前重建客户端是不必要的,而且被认为是一种不好的做法。
// Build a Mailjet client config
MailJetClientConfiguration config;
config = new MailJetClientConfiguration()
.setBaseUrl("https://api.mailjet.com/v3/REST/")
.setDefaultApiKey(System.getenv("MJ_PROD_PUBLIC"))
.setDefaultSecretKey(System.getenv("MJ_PROD_PRIVATE"));
// Build a Mailjet client
MailJetApiClient client = config.buildClient();
// Your code (adapted to my environment, ie no 'Response' object
// and no client factory.)
User thisUser = null;
try
{
// Note that the 'L' in the 'identifiedBy' value fi is necessary
thisUser = client
.createCall(User.Get)
.identifiedBy(UserProperty.ID, /*Our user's ID*/L)
.execute();
}
catch (MailJetApiCallException e2)
{
e2.printStackTrace();
}
String email = thisUser.getEmail();
String lastip = thisUser.getLastIp();
Date lastlogin = thisUser.getLastLoginAt();
String local = thisUser.getLocale();
String timezone = thisUser.getTimezone();
Date warned = thisUser.getWarnedRatelimitAt();
try
{
thisUser = client
.createCall(User.Update)
.identifiedBy(UserProperty.ID, /*Our user's ID*/L)
.property(UserProperty.USERNAME, "DevRel Team Mailjet")
.execute();
}
catch (MailJetApiCallException e)
{
e.printStackTrace();
}
复制粘贴最后一点(更新过程)以便更新调用执行两次(当然没有相同的新用户名)不会抛出任何错误,当然也不会出现 NullPointerException
或500 HTTP 错误代码。
用户名也相应更改。
是的,如上所述,请联系我们的支持人员 here。这将使我们能够更好地帮助您。
如果这个答案让您满意,请不要忘记接受并点赞,这样其他遇到类似问题的人就会知道这对您有帮助:-)