OAuth:如何在java中按字典字节值顺序对字符串排序

OAuth:如何在java中按字典字节值顺序对字符串排序,java,oauth,2-legged,Java,Oauth,2 Legged,您好,我正在尝试从google API获取请求令牌。为了获取请求令牌,我必须按照java代码段中的字典字节值顺序对参数字符串进行排序 String datastring=URLEncoder.encode("oauth_version", "UTF-8")+"="+URLEncoder.encode("1.0", "UTF-8"); datastring+="&"+URLEncoder.encode("oauth_nonce", "UTF-8")+"="+URLEncoder.e

您好,我正在尝试从google 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");
我对查询字符串的参数进行了编码,现在我必须按字典顺序对datastring进行排序,以便向URL发送post请求 任何人都可以帮助我们如何在java中按字典顺序对这个字符串进行排序。

使用java。这将允许您使用OAuth参数作为键,然后将值作为指定的值

我建议您首先将所有参数添加到
树状图
,然后迭代以获取
,以构建URL查询字符串

TreeMap
的规范规定:

地图将根据其键的自然顺序进行排序,或按 在地图创建时提供的
比较器
,具体取决于 使用构造函数


对字符串排序是什么意思?你有很多字符串,不想按顺序排序吗?没有,在这个字符串中有很多(key=value)对,我必须按字典顺序对这些键值对进行排序。那么,如何对这个字符串进行排序,使这些键值对按字典顺序排列呢?这应该是你问题的一部分。为什么不按照您想要的顺序对字符串连接进行排序呢。你所有的键都是常量,所以顺序总是一样的。我想说清楚,你为什么不先从
oauth\u callback
开始,然后从
oauth\u consumer\u key
开始,依此类推。这将保证词典的顺序,而不必事后排序。对不起,实际上我混淆了术语词典!!