我是 Kotlin 和协程的新手。我fun在我的活动和里面有一个,检查User用户名和密码,如果是真的,返回Users对象。
一切都好。但是当我按下按钮时,我的活动被阻止并等待Users登录响应。
我用这个乐趣:
private fun checkLogin() : Boolean {
runBlocking {
coroutineScope {
launch {
user = viewModel.getUserAsync(login_username.text.toString(), login_password.text.toString()).await()
}
}
if(user == null){
return@runBlocking false
}
return@runBlocking true
}
return false
}
Run Code Online (Sandbox Code Playgroud)
这是我的 ViewModel :
class LoginViewModel(app: Application) : AndroidViewModel(app) {
val context: Context = app.applicationContext
private val userService = UsersService(context)
fun getUserAsync(username: String, password: String) = GlobalScope.async {
userService.checkLogin(username, password)
}
}
Run Code Online (Sandbox Code Playgroud)
用户服务:
class UsersService(ctx: Context) : IUsersService …Run Code Online (Sandbox Code Playgroud) 我尝试连接到Binance ApiUsing C#And RestSharplib。根据文件,我应该尝试这样的事情:
查询字符串:符号=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559
HMAC SHA256 签名:
[linux]$ echo -n "symbol=LTCBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000×tamp=1499827319559" | openssl dgst -sha256 -hmac "NhqPtmdSJYdKjVHjA7PZj4Mge3R5YNiP1e3UZjInClVN65XAbvqqM6A7H5fATj0j" (stdin)= c8db56825ae71d6d71206000000000000000000000000000001c8db56825ae71d6d7920621bc8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c8c88c88c8888888
(HMAC SHA256) [linux]$ curl -H "X-MBX-APIKEY: vmPUZE6mv9SD5VNHk4HlWFsOr6aKE2zvsw0MuIgwCIPy6utIco14y7Ju91duEh8A" -X POST https://api.binance.com/api.binance.order/api/quantity=YC&T&TyC&T=C&T&Q =0.1&recvWindow=5000×tamp=1499827319559&signature=c8db56825ae71d6d79447849e617115f4a920fa2acdcab2b053c4b2838bd6b71
我尝试了很多方法和很多堆栈问题,但我找到了其他语言而不是 c# 的解决方案。这是我所做的基于:这个和这个
public string GetAccountInfo()
{
long timeStamp = GetTimestamp();
var request = new RestRequest("api/v3/account");
request.AddHeader("X-MBX-APIKEY", ApiKey);
request.AddParameter("timestamp", timeStamp, ParameterType.QueryString);
request.AddParameter("recvWindow", RecvWindow, ParameterType.QueryString);
request.AddParameter("signature", GetSignature(request.Parameters), ParameterType.QueryString);
return Client.Get(request).Content;
}
private long GetTimestamp()
{
return new DateTimeOffset(DateTime.UtcNow).ToUnixTimeMilliseconds();
}
private string …Run Code Online (Sandbox Code Playgroud)