正确发送HTTP发布请求

时间:2016-03-17 06:00:32

标签: java http aws-lambda html-form-post

我有一个简单的AWS Lambda函数,它必须接收HTTP Post数据并打印它:

AWS Lambda函数

var aws = require('aws-sdk');
var querystring = require('querystring');
var ses = new aws.SES();

exports.handler = function(event, context) {
    console.log("Incoming: ", event);             
};

我的HTML表单:

<form action="http://myawsfuncurl" method="POST">
   <input type="textarea" width="200" height="100" value="Hello"><br>
   <input type="submit" value="Send">
</form>

控制台只是打印:传入:{}
没有收到任何数据。

但是,当我通过java代码发送HTTP Post时,这可以正常工作:

Java代码

URL obj = new URL("http://myawsfuncurl");
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
//add reuqest header
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", USER_AGENT);
con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

String payload = "hello";

// Send post request
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(payload);
wr.flush();
wr.close();

如何通过HTML表单使其正常工作?

1 个答案:

答案 0 :(得分:0)

我尝试通过http POST表单发送它时遇到了同样的问题。

我通过Ajax请求发送它来解决这个问题,该请求将JSON数据发送到该函数。

这样的事情应该会有所帮助。如果你把它放在你的html页面上的脚本标签中。

def tables_bussed():
    tables = input("How many tables can you bus per hour? (I can only read numbers.)")
    try:
        tables = int(tables)
    except ValueError:
        print ('Sorry dude, you must input a number that is an integer')
        tables_bussed()