2017-07-04 83 views
0

我有一個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函數?

回答

0

這個問題得到解決,當我添加了''的URL,在PHP的lambda調用。所以現在調用調用看起來像https://xxx.amazonaws.com/prod/sendsmsapiresource?name=test&number=9618143233&url=%27http%3A%2F%2Fexample.com%2F%27&message=testmesage&user_id=1和我的輸入lambda來作爲Input: {name=test, number=9618143233, message=test, url='http://www.example.com', user_id=1}