快速业务通道

面向Java开发人员的Scala指南 - 用Scitter更新Twitter - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
    val url =  "http://twitter.com/account/rate_limit_status.xml"      val (statusCode, statusBody) =      Scitter.execute(url, username, password)     if (statusCode == 200)     {      Some(RateLimits.fromXml(XML.loadString(statusBody)))     }     else     {      None     }    }   } }

我觉得还是很简单。

面向Java开发人员的Scala指南 - 用Scitter更新Twitter(4)

时间:2010-12-04 IBM Ted Neward

更新

现在,有了新的 POST 版本的 HTTP 通信层,我们可以来处理 Twitter API 的中心:update 调用。毫不奇怪,需要一个 POST,并且至少有一个参数,即 status。

status 参数包含要发布到认证用户的 Twitter 提要的不超过 140 个字符的 消息。另外还有一个可选参数:in_reply_to_status_id,该参数提供另一个更 新的 id,执行了 POST 的更新将回复该更新。

update 调用差不多就是这样了,如清单 6 所示:

清单 6. Scitter v0.3: update

package  com.tedneward.scitter {   class Scitter   {    // ...    def update(message : String, options : OptionalParam*) :  Option[Status] =    {     def optionsToMap(options : List[OptionalParam]) : Map [String, String]=     {      options match       {       case hd :: tl =>        hd match {         case InReplyToStatusId(id) =>          Map("in_reply_to_status_id" -> id.toString)  ++ optionsToMap(tl)         case _ =>          optionsToMap(tl)        }       case List() => Map()      }     }     val paramsMap = Map("status" -> message) ++  optionsToMap(options.toList)     val (statusCode, body) =      Scitter.execute ("http://twitter.com/statuses/update.xml",        paramsMap, username, password)     if (statusCode == 200)     {      Some(Status.fromXml(XML.loadString(body)))     }     else     {      None     }    }   } }

也许这个方法中最 “不同” 的部分就是其中定义的嵌套函数 — 与使用 GET 的其他 Twitter API 调用不同,Twitter 期望传给 POST 的参数出现在执 行 POST 的主体中,这意味着在调用 Scitter.execute() 之前需要将它们转换 成 Map 条目。但是,默认的 Map(来自 scala.collections.immutable)是不 可变的,这意味着可以组合 Map,但是不能将条目添加到已有的 Map 中。

面向Java开发人员的Scala指南 - 用Scitter更新Twitter(5)

时间:2010-12-04 IBM Ted Neward

可变集合

在 Scala 中可以使用可变集合,只需导入 scala.collections.mutable 包 ,而不是 scala.collections.immutable。但是,这样做要冒常见的 使用可变 数据 的风险,所以常规的 Scala 编程风格建议从其他不可变集合创建不可变集 合。如果确实需要或想要使用可变集合,那么可以导入 scala.collections,然 后用部分包名前缀按 mutable.Map 或 immutable.Map 的方式引用 Map(或其他 )集合类型。这样可以避免在一个块中同时使用可变集合和不可变集合时出现混 淆。

解决这个小难题的最容易的方法是递归地处理传入的 OptionalParam 元素的 列表(实际上是一个 Array[])。我们将每个元素拆开,将它转换

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号