这是一个愚蠢的问题,但我似乎无法弄清楚。我正在构建一个与API通信的Flutter应用,为了使用户通过身份验证,它会发送令牌。 每当用户登录时,我都会将令牌保存在“共享首选项”中,然后在我发出请求时,将令牌添加到标头中,在这种情况下,我需要在URL中使用它。 但是,每当我连接字符串时:服务器url和令牌都会在令牌中添加额外的“”。像这样:
http://10.0.2.2:64342/chatHub?access_token="token-value"
代替
http://10.0.2.2:64342/chatHub?access_token=token-value
代码如下:
var preferences = await SharedPreferences.getInstance();
token = preferences.getString(token_key);
var url = '$serverURl?access_token=$token';
答案 0 :(得分:2)
据我了解您的问题,我想回答一下。
那不可能!
var serverURl = 'http://10.0.2.2:64342/chatHub';
var token = 'token-value';
var url = '$serverURl?access_token=$token';
print(url);
它只是打印正确的一个!
您可以检查存储在SharedPreferences中的字符串!那也许带引号。
答案 1 :(得分:0)
好的,我知道了。由于我只从API发送令牌。我收到带有“”的邮件。 相反,我现在发送带有令牌的json,例如:{“ token”:“ token_value”},然后对其进行解码以获取实际值。因此,当我存储共享首选项时,它不会保留“”。
所以在后端:
return Ok(new {token = generatedToken});
和飞镖
var tokenJson = json.decode(response.body);
var token = tokenJson['token'];
preferences.setString(token_key, token);
感谢所有提供帮助的人:)