我正在尝试使用 Java 循环 BasicNameValuePair。 我已经有一个 PHP 的工作示例。 这是我所拥有的:
ArrayList<NameValuePair> data = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("email", username));
postParameters.add(new BasicNameValuePair("pass", password));
public String sign_creator(ArrayList data){
String sig = "";
for(String key : data ){
String value = data[key];
sig += "" + key + "=" + value + "";
}
sig += "62f8ce9f74b12f84c123cc23437a4a32";
sig = md5(sig);
return data['sig'] = sig;
}
我正在尝试用 Java 实现这个 PHP 逻辑
$data = array(
"email" => @$_GET['u'],
"password" => @$_GET['p'],
);
function sign_creator(&$data){
$sig = "";
foreach($data as $key => $value){
$sig .= "$key=$value";
}
$sig .= "62f8ce9f74b12f84c123cc23437a4a32";
$sig = md5($sig);
return $data['sig'] = $sig;
}
最佳答案
PHP 支持的一些功能在 Java 中的工作方式有所不同。
- 在 Java 中,值永远不会通过引用传递,而只能通过值传递。
- 像 PHP 中那样的关联数组不存在,在 Java 中它们使用
HashMap
。不过,带有NameValuePair
的List
也是可能的。 - 像
'sig'
这样的字符串文字必须写在双引号中。 - 变量不能在字符串文字中使用,因此
"$key=$value"
不起作用。
你已经快完成了,你只需要更改代码中的一些内容:
// I guess you're using org.apache.commons.httpclient.NameValuePair
void addSign(List<NameValuePair> data) {
String sig = "";
for (NameValuePair pair : data) {
sig += pair.getName() + "=" + pair.getValue();
}
sig += "62f8ce9f74b12f84c123cc23437a4a32";
sig = md5(sig); // I assume you have an md5 method somewhere.
// You need to add the sig to the list
data.add(new BasicNameValuePair("sig", sig));
}
注意:您不应使用 MD5,因为它被认为是不安全的。请参阅this article .
关于java - 如何在 Java 中循环 BasicNameValuePair,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41980493/