通过LinkedIn API发布广告时遇到一些问题。
这纯粹是针对LinkedIn工程师的问题,因为我敢肯定这不是代码问题。在批量发布带有相关广告素材的广告系列期间,似乎出现了此问题。使用Thread.Sleep
/ await Task.Delay
方法和同步运行无济于事。该错误根本不是描述性的,但是我已经消除了错误的请求和代码错误的原因。绝对是API问题。我想对我可以打给服务器的呼叫数量以及我可以多久打一次电话有更多的见解,但这似乎与之无关。我尝试调试并等待10到20秒,然后发布广告。
我通过API正在执行的操作如下:
让我补充一下,我已经确保在尝试发布广告素材时,它确实具有引用的共享ID和引用的广告系列的ID。
错误消息:
{“ message”:“验证失败,因为[{原因= FAIL_TO_RETRIEVE_UPDATE,字段=参考,batchIndex = 0,类型= REMOTE_OPERATION_FAILED,消息=无法获取更新。可能是暂时失败。参考,参数= {值= ,key =}}]“,”状态“:400}
答案 0 :(得分:0)
同时,请查看以下解决此问题的方法:
我介绍了一些与await Task.Delay()
方法结合使用的重试逻辑,该方法似乎有所帮助,如果因上述错误而失败,通常4-5次重试就足够了。
public async Task<string> PostTheContentAsync(HttpClient httpClient, object campaignManagerObject, string reqUrl, int retriesRemaining = 5)
{
try
{
ByteArrayContent byteContent = CreateByteArrayContent(campaignManagerObject);
var response = await httpClient.PostAsync(reqUrl, byteContent);
response.EnsureSuccessStatusCode();
IEnumerable<string> headerValue = response.Headers.GetValues("X-LinkedIn-Id");
return headerValue.First();
}
catch
{
if (retriesRemaining > 0) //and exception is temporary
{
await Task.Delay(5000);
return await PostTheContentAsync(httpClient, campaignManagerObject, reqUrl, retriesRemaining - 1);
}
throw new Exception($"Error while posting the content of {campaignManagerObject.GetType()} for URL: {reqUrl} in {nameof(ManagementBaseClass)}, {nameof(PostTheContentAsync)}.");
}
}