gpt4 book ai didi

java - Grooveshark api 始终返回 "Method not found"消息

转载 作者:可可西里 更新时间:2023-11-01 16:33:54 25 4
gpt4 key购买 nike

我正在尝试使用 grooveshark 开始一个简单的 session ,并使用 sendPostReq 函数调用 startSession api。我不断收到来自 grooveshark 的以下回复。

{"errors":[{"code":2,"message":"Method not found."}]}

我们使用 grooveshark api 的方式是我们有有效载荷(在我的例子中是 grooveSharkjson),我们使用 key 生成它的 md5 散列并将该 json 发布到这个 url https://api.grooveshark.com/ws3.php?sig= {md5-hash-of-payload}。这是正确的程序吗?

sendPostReq 函数和生成 md5 哈希的代码也在下面出现

public static void sendPostReq() throws Exception{

String grooveSharkjson = "{'method':'startSession','header':{'wsKey':'wskey'}}";

String key = "secret"; // Your api key.
String sig = SecurityHelper.getHmacMD5(grooveSharkjson, key);

URL url = new URL("https://api.grooveshark.com/ws3.php?sig=" + sig);
URLConnection connection = url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);

connection.connect();

OutputStream os = connection.getOutputStream();
PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
pw.write(grooveSharkjson);
pw.close();

InputStream is = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
is.close();
String response = sb.toString();
System.out.println(response);

}

public static String getHmacMD5(String payload, String secret) {
String sEncodedString = null;
try {
SecretKeySpec key = new SecretKeySpec((secret).getBytes("UTF-8"), "HmacMD5");
Mac mac = Mac.getInstance("HmacMD5");
mac.init(key);

byte[] bytes = mac.doFinal(payload.getBytes("UTF-8"));

StringBuffer hash = new StringBuffer();

for (int i=0; i<bytes.length; i++) {
String hex = Integer.toHexString(0xFF & bytes[i]);
if (hex.length() == 1) {
hash.append('0');
}
hash.append(hex);
}
sEncodedString = hash.toString();
}
catch (UnsupportedEncodingException e) {}
catch(InvalidKeyException e){}
catch (NoSuchAlgorithmException e) {}

return sEncodedString ;
}

我相信我生成的散列是正确的,因为我已经使用他们在其网站上提供给我们的示例 key 和 secret 对其进行了验证 http://developers.grooveshark.com/tuts/public_api

最佳答案

我知道我在大约 20 分钟前发布了这个问题,但我刚刚找到了解决方案。 json 字符串有问题,尤其是我生成它的方式。应该是这样生成的

    String grooveSharkjson = "{\"method\":\"startSession\",\"header\":{\"wsKey\":\"wsKey\"},\"parameters\":[]}";

我没想到解决方案会如此明显,但这是我对如何解决我的问题的想法 - 我在他们的沙箱 (http://developers.grooveshark.com/docs/public_api/v3/sandbox.php) 上测试了我的 key 和 secret ,并仔细检查了 hmac md5 签名.

关于java - Grooveshark api 始终返回 "Method not found"消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21353665/

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