gpt4 book ai didi

java - 函数返回错误结果,但在具有相同字符串参数的调试器中返回良好结果

转载 作者:行者123 更新时间:2023-12-01 05:39:38 27 4
gpt4 key购买 nike

我一生中见过很多事情,但这对我来说似乎难以置信。实际上我是java新手。

我正在尝试设置 oauth 通信。

为此,我需要签署每个请求。我为此使用以下函数:

private String computeHmac(String baseString, String key)
{
Mac mac = null;
try
{
mac = Mac.getInstance("HmacSHA1");
}
catch(NoSuchAlgorithmException ex) { }
SecretKeySpec secret = null;
secret = new SecretKeySpec(key.getBytes(), mac.getAlgorithm());

try
{
mac.init(secret);
}
catch (InvalidKeyException ex)
{
Log.e(Constants.LOG_TAG, "Invalid key: " + ex.getMessage());
}
mac.update(baseString.getBytes());
byte[] digest = mac.doFinal();
return Base64.encodeBytes(digest).trim();
}

上面的函数被包装到一个自定义类中,我将其用于 oauth 相关操作。

对于 oauth,我们必须进行两次往返才能与目标 api 通信。

第一次正确生成签名。

第二次证明生成的签名总是错误的,因此我开始调试。该函数有两个输入参数。我在 Eclipse 表达式窗口中创建了两行。一个包含函数调用和字符串变量,第二个包含相同的函数调用和我从变量值中复制出来的确切字符串值。

第一个表达式的值与错误签名之前的值相同。

惊喜:第二个表达式的值反射(reflect)了正确的签名。

什么鬼???

java中有什么我不知道的特殊因素吗?特殊的字符串处理或其他什么?

最佳答案

这是一个不可见的字符,可能位于字符串末尾。如果有人遇到同样的问题,值得检查一下。我为此损失了几乎一天的时间。

关于java - 函数返回错误结果,但在具有相同字符串参数的调试器中返回良好结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7491229/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com