如果从Xamarin Forms进行调用,则AWS Lambda函数不返回任何记录

时间:2018-07-04 15:57:14

标签: xamarin.forms aws-lambda

我在尝试从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;
}

如果我从邮递员那里打电话也可以。有邮递员发送的任何标头或参数,我不见了吗?

1 个答案:

答案 0 :(得分:0)

我的坏。 DynamoDB中的字段是一个字符串,我将其作为长字符串发送,并且从未转换为字符串。

所以我一改:

object data = new
{
    LastUpdate = ticksLastCheck
};

进入此

object data = new
{
    LastUpdate = ticksLastCheck.ToString()
};

我得到了预期的答复。

谢谢。