嗨,我正试图从谷歌api获得请求令牌。为了获得请求令牌,我必须按照字符串
的Java代码段中的字典顺序字节值排序参数字符串String datastring=URLEncoder.encode("oauth_version", "UTF-8")+"="+URLEncoder.encode("1.0", "UTF-8");
datastring+="&"+URLEncoder.encode("oauth_nonce", "UTF-8")+"="+URLEncoder.encode(System.currentTimeMillis()+"","UTF-8");
datastring+="&"+URLEncoder.encode("oauth_timestamp", "UTF-8")+"="+URLEncoder.encode(System.currentTimeMillis()/1000+"","UTF-8");
datastring+="&"+URLEncoder.encode("oauth_consumer_key","UTF-8")+"="+URLEncoder.encode("iriteshmehandiratta.appspot.com","UTF-8");
datastring+="&"+URLEncoder.encode("oauth_signature_method","UTF-8")+"="+URLEncoder.encode("RSA-SHA1", "UTF-8");
datastring+="&"+URLEncoder.encode("oauth_signature", "UTF-8")+"="+URLEncoder.encode(myrsakey, "UTF-8");
datastring+="&"+URLEncoder.encode("oauth_callback","UTF-8")+"="+URLEncoder.encode("https://www.iriteshmehandiratta.appspot.com/authsub","UTF-8");
datastring+="&"+URLEncoder.encode("scope","UTF-8")+"="+URLEncoder.encode("http://www.google.com/calendar/feeds","UTF-8");
我编码了查询字符串的参数,现在我必须按字典顺序排序数据字符串发送post请求到URL https://www.google.com/accounts/OAuthGetRequestToken有谁能帮助我如何在java中按字典顺序排序这个字符串?
使用Java TreeMap
。这将允许您使用您的OAuth参数作为键,然后将值作为您指定的值。
我建议您将所有参数首先添加到TreeMap
,然后迭代以获得Set<Entry<String, String>>
来构建您的URL查询字符串。
TreeMap
状态规范:
映射按照键的自然顺序排序,或者按在创建地图时提供的
Comparator
,具体取决于哪个