翻了翻阿里提供的SDK,写了个原生的DEMO
先上JAVA的
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.Base64;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class CustomerTest {
public static void main(String[] args) throws Exception {
URL url = new URL("http://xxxx");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
// 分配的ak,sk
String ak = "ak";
String sk = "sk";
// 使用TreeMap完成字典序排序
TreeMap<String, String> params = new TreeMap<>();
String timesatemp = String.valueOf(System.currentTimeMillis());
// 需要放在HTTP header中的key
List<String> headers = Arrays.asList(new String[]{
"_api_access_key",
"_api_name",
"_api_version",
"_api_timestamp"
});
// 公共传递参数
params.put("_api_access_key", ak);
params.put("_api_name", "AddRechargeService");
params.put("_api_version", "1.0.0");
params.put("_api_timestamp", timesatemp);
// 业务数据
params.put("dataMap", "{\"dataMap\":{\"test\":\"aa\",\"test2\":\"中文\"}}");
Set<Entry<String, String>> set = params.entrySet();
// 签名串:key1=va