Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Unity向AWS Lambda函数发送输入参数_C#_Amazon Web Services_Unity3d_Aws Lambda - Fatal编程技术网

C# 从Unity向AWS Lambda函数发送输入参数

C# 从Unity向AWS Lambda函数发送输入参数,c#,amazon-web-services,unity3d,aws-lambda,C#,Amazon Web Services,Unity3d,Aws Lambda,我正在用C#学习AWS Lambda。我的函数看起来有点像这样: [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] namespace Function_Redeem { public class Function { public FunctionOutput FunctionHandler(F

我正在用C#学习AWS Lambda。我的函数看起来有点像这样:

[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]

namespace Function_Redeem
{
    public class Function
    {
        public FunctionOutput FunctionHandler(FunctionInput input, ILambdaContext context)
        {
            // do work with input
            // return FunctionOutput
        }

        public class FunctionInput
        {
            public string someData { get; set; }
        }

        public class FunctionOutput
        {
            public string someAnswer { get; set; }
        }
    }
}
使用AWS中的测试按钮以及VisualStudio中的测试功能时,它可以正常工作

现在,我试着从Unity中调用它

首先,我添加了一个API网关触发器,并保留了默认值:

API endpoint: [the url]
API type: HTTP
Authorization: NONE
Cross-origin resource sharing (CORS): No
Enable detailed metrics: No
Method: ANY
Resource path: /FunctionName
Stage: default
然后团结起来,

private static IEnumerator TestFunction(string uri, string data)
{
    UnityWebRequest webRequest = UnityWebRequest.Put(uri, data);
    yield return webRequest.SendWebRequest();
    if (webRequest.isNetworkError)
        Debug.LogError("Network error: " + webRequest.error);
    else
        Debug.Log(webRequest.downloadHandler.text);
}
我称之为,数据是

{"someData":"Hello"}
函数调用工作,我知道它正在到达我的函数,但输入数据(即
someData
字段)为空。它似乎没有解析我发送的数据,因此
FunctionInput
默认为null
someData


我缺少什么?

因为您使用API网关作为lambda函数的触发器,所以接受作为处理程序的输入参数(而不是FunctionInput)。该字段将包含您的序列化负载
{“someData”:“Hello”}

公共类函数
{
公共函数输出函数处理程序(APIGatewayProxyRequest请求,ILambdaContext上下文)
{var requestBody=JsonConvert.DeserializeObject(request.Body);
//使用输入进行工作
//返回函数输出
}
公共类函数输入
{
公共字符串someData{get;set;}
}
公共类函数输出
{
公共字符串someAnswer{get;set;}
}
}
}

public class Function
{
    public FunctionOutput FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)
    {    var requestBody =  JsonConvert.DeserializeObject<FunctionInput>(request.Body);
        // do work with input
        // return FunctionOutput
    }

    public class FunctionInput
    {
        public string someData { get; set; }
    }

    public class FunctionOutput
    {
        public string someAnswer { get; set; }
    }
}