1

写真をflickrにアップロードする関数をhttp://www.flickr.com/services/api/upload.api.htmlとして作成したいと思います。私は次のコードを書きました:

val http = new Http with thread.Safety
val uploadEndPoint = :/("api.flickr.com") / "services" / "upload"

次に、ディスパッチを使用してメソッドに署名します

def signUploadRequest(userParams: Map[String, String], accessToken: Token, verifier: String): Map[String, String] = {
    var map = userParams
    map += "api_key" -> consumerKey
    sign("", uploadEndPoint.toString, userParams, consumer, Some(accessToken), Some(verifier), Some(OAuth.oob))
  }

次に、次のメソッドを呼び出します。

def sendUploadRequest(reqParms:Map [String、String])= {http(uploadEndPoint.POST <:<reqParms as_str)}

しかし、次のエラーが発生しました。

<rsp stat="fail">
    <err code="100" msg="Invalid API Key (Key has invalid format)" />
</rsp>

リクエストにも同じ手順を使用しますが、正常に機能します。投稿の問題は何ですか?

ありがとう、フェラス

4

1 に答える 1

1

この flickr api はわかりませんが、リクエストの本文としてマップを渡すべきではありませんか?

もう 1 つの注意点は、写真が署名の一部になることはできないということです (署名がuserParams含まれている場合に備えて)。

したがって、ヘッダーにマップを配置する代わりに投稿の本文を使用する必要がある場合 (そうします<:<):

def sendUploadRequest(reqParms: Map[String, String]) = { http(uploadEndPoint << reqParms as_str) }

指定された<<マップをペイロードとして使用して、リクエストをポストに変換します。POSTを使用すると、マップ本体が空に設定されることに注意してください。

于 2012-02-14T10:32:46.557 に答える