如何解决Java 中的 AWS Lambda http GET 方法
我正在用 Java 编写一个 AWS Lambda 函数,但很难发出 http get
请求,可能是因为我没有传递正确的 User-Agent
参数。
错误状态返回403
有人可以告诉我我应该在 User-Agent
中具体指定 AWS lambda 函数吗?
或者在java中使用get请求的任何替代方法?
当我在桌面环境中使用 User-Agent
作为“Mozilla/5.0”运行相同的代码时,代码运行良好并返回 200。
以下是我的 Java 代码:
public Object handleRequest(Object request,Context context){
try {
String vAdress = "https://cdn-api.co-vin.in/api/v2/admin/location/states"
URL vURL = new URL(vAdress);
HttpURLConnection vConnection = (HttpURLConnection) vURL.openConnection();
vConnection.setRequestMethod("GET");
//vConnection.setRequestProperty("User-Agent","Java client");
//vConnection.setRequestProperty("User-Agent","agent");
System.out.println(vConnection.getResponseCode());
} catch (IOException ioe) {
return ioe.toString();
}
}
解决方法
我认为您必须使用 API Gateway 将请求代理到您的 lambda 函数,然后设置一个 mapping template 以通过用户代理传递到您的 lambda。
,我建议考虑配置 API Gateway 以向 Lambda 发送代理请求。这不仅为您提供了请求正文,还为您提供了所有标头。
https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。