【发布时间】:2018-05-11 00:44:15
【问题描述】:
单击按钮时,我想在我的 android 应用程序中发出请求。在 Python 中,我可以这样做:
import requests
params = {
'param1':some_string,
'param2':some_int,
'param3':another_string
}
requests.post("https://some.api.com/method/some.method", params=params)
当我按下按钮时,我想在 Kotlin 中做同样的事情。我尝试使用Fuel 和khhtp 执行此操作,但没有成功——我一按下按钮,应用程序就崩溃了,负责发送请求。
UPD:我使用了什么:
AndroidManifest.xml
...
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
...
build.gradle
dependencies {
...
compile 'com.github.jkcclemens:khttp:0.1.0'
...
}
MainActivity.kt
fun request(){
var message = "message"
var uid = "123456" //I wanted to use it as int, but mapOf didn't allow me
var token = "token"
val payload = mapOf("token" to token, "user_id" to uid, "message" to message)
get("https://some.api.com/method/some.method", params=payload)
val popup = Toast.makeText(this,"Message sent!",Toast.LENGTH_LONG)
popup.show()
}
activity_main.xml
<Button
...
android:onClick="request" />
这是 khhtp 的例子,Fuel 的例子不见了。
UPD2。部分Logcat输出:
【问题讨论】:
-
我没有使用过你提到的库,但如果可以的话,请尝试使用 Retrofit 2。还请编辑并放置你尝试过的代码,以便其他用户指出你的错误。跨度>
-
您能否添加您正在尝试的代码,以帮助我们确定崩溃原因?
-
有了@Debnjan Volley 的建议,也是不错的选择
-
这可能是因为在Android上你不能在主线程中进行网络调用。你能发布你的 logcat 输出吗?
-
@crgarridos ,完成