1

我想添加一个 Hashtable 作为 NameValuePair 的值,如下所示:

name= credit_card

value(this is the hashtable)= {expirationDate="2013/02/18", ownerName="Jack Sparrow", typeOfCard="C2"}

或像这样:

新的 BasicNameValuePair("credit_card",{expirationDate="2013/02/18", ownerName="Jack Sparrow", typeOfCard="C2"})。

这是我的代码的一部分,您可以看到我如何添加一个简单的 NameValuePair:

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("https://example.com/register");
try {
  List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
  nameValuePairs.add(new BasicNameValuePair("user", user));
  nameValuePairs.add(new BasicNameValuePair("password", password));
  post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

  HttpResponse response = client.execute(post);

提前致谢!

4

2 回答 2

2

您可以使用Apache DigestUtils轻松计算哈希:

String hash = DigestUtils.sha512Hex(json);
nameValuePairs.add(new BasicNameValuePair("credit_card", hash));

或者您可以直接使用 Java Cryptography API:

final Charset charset = Charset.forName("UTF-8");
final MessageDigest digest = MessageDigest
        .getInstance("SHA-512");
final byte[] hashData = digest
        .digest(json.getBytes(charset));
final String hash = new String(hashData, charset);
nameValuePairs.add(new BasicNameValuePair("credit_card", hash));
于 2013-02-19T00:48:08.317 回答
2

我不确定我是否正确理解了您的问题。但我在这里试一试——

String message = "hello";

System.out.println( DigestUtils.md5Hex(message) );

所以你可以修改你的add方法,nameValuePairs如下所示。

new BasicNameValuePair("credit_card", DigestUtils.md5Hex(your_json))

这是手册

问题更新后更新答案

如果您的 HashTable 值是一个字符串,那么您可以像这样在您的nameValuePair

new BasicNameValuePair("credit_card", (your_json))

于 2013-02-19T01:03:50.027 回答