我正在尝试编写一个简单的程序,涉及使用a PlacePicker来捕获位置信息.但是,我的项目似乎无法解决必要的进口问题.
build.gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.3.0'
compile 'com.google.android.gms:play-services-location:9.2.0'
compile 'com.google.android.gms:play-services-maps:9.2.0'
}
Run Code Online (Sandbox Code Playgroud)
活动:
import com.google.android.gms.location.places.Place; // "Place" is not resolved
import com.google.android.gms.location.places.ui.PlacePicker; // "ui" is not resolved
import com.google.android.gms.maps.model.LatLng;
Run Code Online (Sandbox Code Playgroud)
该LatLng进口似乎工作,而不是其他两个.我导入完整的com.google.android.gms:play-services:9.2.0API 时整个项目运行正常,但我想使用特定的API调用来减少不必要的库.
我有一段Kotlin代码,试图使用Java的Reflection包来反射地调用方法:
val arguments = arrayOfNulls<Any>(numberOfParams)
// Populate arguments
try {
fooMethod.invoke(fooClass, arguments)
} catch (e: Exception) {
// Panic
}
Run Code Online (Sandbox Code Playgroud)
IllegalArgumentException为“错误的参数数量”时,它总是失败。
我对此问题进行了一些阅读,似乎该invoke()方法的传播运算符拒绝解压缩,Array<Any>因为它不等效于Object[]。我可以尝试使用Object[]Java中的标准,但这使我感到奇怪,这是唯一的方法吗?这是最好的方法吗?我可以用Kotlin的类型做到这一点吗?
在Kotlin中实现我想要的最理想的方式是什么?
我正在尝试使用AWS Lambda和API Gateway设置POST lambda函数.这个POST应该可以使用Javascript从现代浏览器调用,所以很自然地,我需要为此启用CORS.不幸的是,无论我做什么,服务器都会在Firefox中返回400错误.我在Gateway的POST功能上启用了CORS,并设置了一个包含所有必需头的OPTIONS功能,但我仍然得到:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://ua1c36to9i.execute-api.ap-southeast-2.amazonaws.com/beta. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
它告诉我,我没有收到Access-Control-Allow-Origin标题,我可以通过查看"网络"标签中的响应来确认:
Content-Length: 181
Content-Type: application/json
Date: Sun, 23 Apr 2017 03:39:10 GMT
Via: 1.1 d0d3075c33572544a6859ec75d2258a1.cloudfront.net (CloudFront)
X-Amz-Cf-Id: EEMUjL78Bf1PSwt4E4QGPgTLXSD8sehiUCgy-XA7TC_1cKv3jxs9Rg==
X-Cache: Error from cloudfront
X-Firefox-Spdy: h2
x-amzn-RequestId: 6943b9bd-27d6-11e7-aaae-f36ce836982f
Run Code Online (Sandbox Code Playgroud)
标题X-Cache: Error from cloudfront似乎告诉我Lambda必须返回某种内部服务器错误,并且CORS仅在Gateway上启用HTTP 200请求.实际上,我的OPTIONS预检返回HTTP 200 OK,这表明CORS似乎启用得很好.但我不知道如何用lambda捕获错误并为CORS启用它,所以我不知道我的内部错误可能是什么.
但令我感到奇怪的是,如果我使用test-cors.org测试我的POST功能,它声称我得到了一个HTTP 200 OK.更奇怪的是,如果我复制它生成的确切代码来发出请求并将其放入我本地计算机上的测试HTML页面,我仍然会获得HTTP 400.这是怎么回事?
我的ajax电话:
var myData = JSON.parse(this.result);
console.log(result);
$.ajax({
type: "POST",
dataType: "json",
url: "https://ua1c36to9i.execute-api.ap-southeast-2.amazonaws.com/beta",
data: myData,
headers: …Run Code Online (Sandbox Code Playgroud) javascript amazon-web-services cors aws-lambda aws-api-gateway