响应完成回调
使用SDK时可能需要传入各类回调函数以完成您想要实现的相关操作,本文介绍响应完成回调的编写示例。
功能:
- 这个回调会在以下情况之一被调用:响应已经被完全接收;或发生了一个错误导致提前中止了请求;又或者是一个其他用户提供的回调返回了一个值打算中止请求。
接口定义:
void (S3ResponseCompleteCallback)(S3Status status, const S3ErrorDetails *errorDetails, void *callbackData);
参数:
参数名 | 类型 | 说明 |
---|---|---|
status | S3Status | 响应状态码 |
errorDetails | const S3ErrorDetails * | 错误的详细信息 |
callbackData | void * | 发出请求时指定的回调数据 |
代码示例:
void responseCompleteCallback(S3Status status,
const S3ErrorDetails *error,
void *callbackData)
{
(void) callbackData;
statusG = status;
int len = 0;
if (error && error->message) {
len += snprintf(&(errorDetailsG[len]), sizeof(errorDetailsG) - len,
" Message: %s\n", error->message);
}
if (error && error->resource) {
len += snprintf(&(errorDetailsG[len]), sizeof(errorDetailsG) - len,
" Resource: %s\n", error->resource);
}
if (error && error->furtherDetails) {
len += snprintf(&(errorDetailsG[len]), sizeof(errorDetailsG) - len,
" Further Details: %s\n", error->furtherDetails);
}
if (error && error->extraDetailsCount) {
len += snprintf(&(errorDetailsG[len]), sizeof(errorDetailsG) - len,
"%s", " Extra Details:\n");
int i;
for (i = 0; i < error->extraDetailsCount; i++) {
len += snprintf(&(errorDetailsG[len]),
sizeof(errorDetailsG) - len, " %s: %s\n",
error->extraDetails[i].name,
error->extraDetails[i].value);
}
}
}