API主接口:https://api.hamcq.cn/v1/logbook?from=gridtracker
,其中from
参数有过滤机制,只能是gridtracker
。
参数(application/json):
{
"key": "YOUR_API_KEY",
"adif":"ADIF_STRING",
"app":"YOUR_APPLICATION_NAME"
}
其中只有key是必填的。如果只填写key的话等于测试key是否有效,同时正确填写所有参数才能正常进行日志上传。
如果key有效后端将返回“Pass”,且只要key正确,无论上传的adif是否合法都会返回“Pass“,只是日志不会被记录。如果是其他情况似乎会给出一个json说明理由,例如:
// 此时http状态码为406
{"code":406,"status":false,"message":"Invalid"}
示例:
// See https://github.com/SydneyOwl/cloudlog-helper for more
public class HamCQAPIExample
{
public static async Task<string> TestHamCQConnectionAsync(string apikey)
{
return await UploadQSOToHamCQAsync(apikey, null);
}
public static async Task<string> UploadQSOToHamCQAsync(string apikey, string? adif)
{
try
{
var reqJson = new JObject { { "key", apikey } };
if (adif is not null)
{
reqJson.Add("adif", adif);
reqJson.Add("app", DefaultConfigs.DefaultApplicationName);
}
var result = await DefaultConfigs.HamCQQsoUploadEndpoint
.AllowHttpStatus(406)
.WithHeader("User-Agent", DefaultConfigs.DefaultHTTPUserAgent)
.WithHeader("Content-Type", "application/json")
.WithTimeout(TimeSpan.FromSeconds(DefaultConfigs.DefaultRequestTimeout))
.PostStringAsync(reqJson.ToString());
var responseText = await result.GetStringAsync();
var code = result.StatusCode;
if (responseText == "Pass")return string.Empty;
var res = JsonConvert.DeserializeObject<JObject>(responseText);
if (res is null) return $"HamCQ Error: {TranslationHelper.GetString("invalidapikey")}({responseText})";
return $"HamCQ Error: {TranslationHelper.GetString("invalidapikey")} ({res["message"]})";
}
catch (Exception e)
{
return e.Message;
}
}
}