【问题标题】:HTTP POST request sends 403 error. Invalid method signature [closed]HTTP POST 请求发送 403 错误。无效的方法签名[关闭]
【发布时间】:2013-03-29 15:40:36
【问题描述】:

好吧,这真是令人沮丧。我使用我的 API 密钥非常好。身份验证正常,生成令牌正常,会话密钥也正常。

但是当我运行playlist.create 时,播放列表没有创建。

附录(2013 年 4 月 6 日):原来我必须为我的 sig 生成一个新的 md5 哈希,但即使这样做了,该方法也不起作用。

附录 2(2013 年 4 月 9 日):我今天几乎从头开始,并重新编写了大部分代码。我成功创建了 16 个播放列表,没有错误。但是今天,相同的代码不起作用。我根本没碰它,但还是报错。

非虚拟机


出于安全考虑,我无法向您展示我的安全密钥。但是,我确实编写了一个快速程序来查找 last.fm 会话密钥:http://github.com/thekarangoel/LastFMSessionKeyFinder 只需在 last.fm/api 注册,在程序中输入您的 API 密钥和密码,您将拥有测试 API 所需的一切打电话。

【问题讨论】:

  • 嗯,他们发送响应和错误代码。您可能应该阅读它。
  • 手动触发 POST 请求(使用 FF 插件海报)时遇到的错误是:<?xml version="1.0" encoding="utf-8"?> <lfm status="failed"> <error code="3"> Invalid Method - No method with that name in this package </error> </lfm>
  • 我的方法正确,参数正确,但还是报错。 i.imgur.com/y6A4r0z.png
  • 嗯,这很棘手。看起来不错。虽然我不明白你为什么使用 parseUrl 方法。当然,您只需要将 params 字符串转储到对 wr.writeBytes 的调用中而不需要任何进一步处理?
  • 投反对票的是我,那是因为当您包含的链接明确暗示您应该检查它时,您忽略了响应和错误代码,这是预期作为发布好的一部分的研究问题。从那以后,我没有时间查看您的最新研究。

标签: java post http-headers last.fm


【解决方案1】:

我的第一个答案

您没有在散列签名中包含描述。

我的第二个答案

正如我之前在我的一个 cmets 中提到的,您的代码导致了 MalformedURLException。您看不到这一点,因为您没有在 SwingWorker 子类中进行异常处理。如果你添加异常处理as suggested here,你会看到的。

我的第一个答案

您的参数列表中缺少&

String params = "method=playlist.create&title=" + title+ "api_key=" + ...

应该是

String params = "method=playlist.create&title=" + title+ "&api_key=" + ...

阅读请求的答案(connection.getInputStream() 等)并检查问题所在可能是个好主意。

【讨论】:

  • 另外,当我尝试new java.net.URL("method=playlist.create&title=foo") 时,我得到一个java.net.MalformedURLException - 所以我想知道这对你有什么作用?
  • 查看我尝试的手动请求。即使这样也行不通。
  • 嗯,手动请求失败的事实不应该阻止您更正代码。当然,它失败有点好笑,但为什么不尝试让你的代码运行呢?
  • 例如更改为String params = "http://foo.bar?method=playlist.create&title=" + ...parseUrl,只需返回new URL(s).getQuery()。或者您可以按原样使用params 值,我不确定这整个 URL-conversion-thing 是否添加了任何内容。
  • try {...} catch (Exception e) { e.printStacktrace(); } 是你能做的第二糟糕的事情。原型设计和快速完成事情很好,但如果出现问题,你会破坏之后执行的代码的期望 - 大多数时候会导致 NPE(那是你幸运的时候)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
相关资源
最近更新 更多