我在尝试从AWS的Lambda函数取回信息时遇到麻烦。 Lambda函数位于API网关后面。
如果我直接从Lambda控制台或API运行函数,则工作正常。如果我用此代码调用它,则返回[]。
如果令牌正确,我没有任何问题,我可以在Lambda函数中看到参数“ LastUpdate”。
代码如下:
public async Task<string> GetUpdates(long ticksLastCheck, string token)
{
string Error = "";
string response = "";
object data = new
{
LastUpdate = ticksLastCheck
};
var myContent = JsonConvert.SerializeObject(data);
var buffer = System.Text.Encoding.UTF8.GetBytes(myContent);
var byteContent = new ByteArrayContent(buffer);
byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
//I have tested without ConfigureAwait and did not work either
var responseSync = await _client.PostAsync("getUpdates", byteContent).ConfigureAwait(false);
if (responseSync != null)
{
//I have tested with await and did not work either. With await ".Result" should be removed from the line below.
var response2 = responseSync.Content.ReadAsStringAsync();
response = response2.Result;
}
return response;
}
如果我从邮递员那里打电话也可以。有邮递员发送的任何标头或参数,我不见了吗?
答案 0 :(得分:0)
我的坏。 DynamoDB中的字段是一个字符串,我将其作为长字符串发送,并且从未转换为字符串。
所以我一改:
object data = new
{
LastUpdate = ticksLastCheck
};
进入此
object data = new
{
LastUpdate = ticksLastCheck.ToString()
};
我得到了预期的答复。
谢谢。