记录在项目中使用OSS上传文件,然后通过OSS来实现回调中出现的问题。
在按照OSS提供的SDK demo中,添加了自定义的参数之后在回调时获取不到自定义参数。
String content = "Hello OSS";
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName,new ByteArrayInputStream(content.getBytes()));
// 上传回调参数。
Callback callback = new Callback();
callback.setCallbackUrl(callbackUrl);
//(可选)设置回调请求消息头中Host的值,即您的服务器配置Host的值。
// callback.setCallbackHost("yourCallbackHost");
// 设置发起回调时请求body的值。
callback.setCallbackBody("{\\\"mimeType\\\":${mimeType},\\\"size\\\":${size}}");
// 设置发起回调请求的Content-Type。
callback.setCalbackBodyType(Callback.CalbackBodyType.JSON);
// 设置发起回调请求的自定义参数,由Key和Value组成,Key必须以x:开始。
callback.addCallbackVar("x:var1", "value1");
callback.addCallbackVar("x:var2", "value2");
putObjectRequest.setCallback(callback);
PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest);
callback.addCallbackVar("x:var1", "value1");
callback.addCallbackVar("x:var2", "value2");
在添加了callbackVar后在并没有在回调请求中看到添加的x:var1和x:var2。
然后看到官方上github demo才发现需要在setCallbackBody中添加相应的字
// 设置发起回调时请求body的值。
callback.setCallbackBody("{\\\"mimeType\\\":${mimeType},\\\"size\\\":${size}}");
// 设置发起回调请求的自定义参数,由Key和Value组成,Key必须以x:开始。
callback.addCallbackVar("x:var1", "value1");
callback.addCallbackVar("x:var2", "value2");
//添加相应字段如下所示
callback.setCallbackBody("{\\\"mimeType\\\":${mimeType},\\\"size\\\":${size}
,\\\"my_var1\\\":${x:var1},\\\"my_var2\\\":${x:var2}}");
// 设置发起回调请求的自定义参数,由Key和Value组成,Key必须以x:开始。
callback.addCallbackVar("x:var1", "value1");
callback.addCallbackVar("x:var2", "value2");
aliyun-oss-java-sdk/CallbackSample.java at master · aliyun/aliyun-oss-java-sdk · GitHub