Androidネットワークリクエスト-signパラメータの設定

7457 ワード

最近プロジェクトをして、1つの奇妙な要求にぶつかって、バックグラウンドはインタフェースを呼び出す前に署名と有効な時間を検証する必要があると言って、その場で呆然として、sign署名を生成して、次にどのようにするかを言います
まず大まかな考え方を述べる:signの生成:ルールに従ってキー値ペアの形式(key=value)であり、つなぎ合わせるときにkey=value&key=value(注意:key:バックグラウンドに必要なパラメータ名、value:フロントで取得した値)&time=システムで取得した時間&salt=fangzhou(このパラメータはバックグラウンドの要求に従う)、その後urlencode符号化(Javaでは方法がある)&time=システムで取得した時間暗号化された値をすべて大文字(小文字)に変換する必要がある場合は、Javaで直接呼び出す方法があります.
次に、具体的にどのように実現するかについて説明します.
1.要求された数値の結合(key=value&key=value):
String name = "   ";
String address = "  ";

String panameter = "name="+ name + "& address = "+address;
 
   
  
 
  2.                      (       ) 
   
   
  
//       
Date dt= new Date();
Long timeStamp= dt.getTime();

String signText = panameter +"&time="+timeStamp + "&salt=fangzhou";
 
   
  
 
  3.     , signText   urlencode    
   
   
  
try {
  String urlencoderText =  URLEncoder.encode(signText,"utf-8");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
 
  
 
   
  
 
  
  :         ,   try     ,     Java           
   
  

4. md5

//MD5  
String md5Text = md5(urlencoderText);
md5 , , c,v ok ;

, ( ) :

//MD5  
String md5Text = md5(urlencoderText).trim().toUpperCase();
: ( :
.trim().toLowerCase();
 

; ? , ; ... , , !

xutils ( , - );

//      
params = new RequestParams(url);

//      
params.addBodyParameter("name",name);
params.addBodyParameter("address",address);
//---     ---
params.addBodyParameter("time",timeStamp+"");

//     -sign
params.addBodyParameter("sign",md5Text );

, , , , , salt , !! -sign


,,, --


- - - -

- , , , :[email protected];

, - , ........