我有一個AWS lambda函數,它需要5個參數。其中一個參數是從PHP後端傳遞的Url,作爲get參數。 url在傳遞時被編碼,並且參數作爲JSONObject傳遞。請注意,我從amazonaws sdk(com.amazonaws.util.json)使用JSONObject。AWS Lambda - 將URL作爲GET參數從PHP轉換爲Java Lambda函數
在從中獲取值之前,輸入對象在lambda函數中轉換爲JSONObject。轉換爲輸入到Json時,問題出現了,因爲這個url。如果我通過一個字符串代替url,lambda工作得很好。
下面是相關代碼和輸出:
@Override
public String handleRequest(Object input, Context context) {
LambdaLogger logger = context.getLogger();
if (DEBUG)
logger.log("Starting LambdaFunction");
TwilioRestClient client = new TwilioRestClient(TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN);
try {
if (DEBUG)
logger.log("Input: " + input.toString());
JSONObject object = new JSONObject(input.toString());//Problem here
if (DEBUG)
logger.log("Object: " + object.toString());
String name = object.getString("name");
String message = object.getString("message");
String survey_url = object.getString("url");
String user_id = object.getString("user_id");
String number = object.getString("number");
if (DEBUG) {
logger.log("Name: " + name);
logger.log("Message: " + message);
logger.log("Survey Url: " + survey_url);
logger.log("User ID: " + user_id);
logger.log("Number: " + number);
}
// Other functionality
}
catch (JSONException e) {
logger.log("JSONException");
e.printStackTrace();
} catch (TwilioRestException e) {
logger.log("TwilioRestException");
e.printStackTrace();
}
catch(Exception e) {
e.printStackTrace();
}
return "End of SendSMSLambdaFunction";
}
從PHP調用 - > LAMBDA :::從CloudWatch的https://xxx.amazonaws.com/prod/sendsmsapiresource?name=test&number=9618143233&url=http%3A%2F%2Fexample.com%2F&message=testmesage&user_id=1
輸出
爲LAMBDA :::
Input: {name=test, number=9618143233, message=test, url=http://www.example.com, user_id=1}
JSONException
com.amazonaws.util.json.JSONException: Expected a ',' or '}' at 55 [character 56 line 1]
哪有我將url作爲get參數傳遞給lambda函數?