JSRUN 用代码说话

Java Demo

编辑教程

在线代码运行JAVA DEMO

package org;

import okhttp3.*;
import java.io.IOException;
import java.math.BigInteger;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class ApiRequestDemo {
    static final String APP_ID = "xxx";
    static final String APP_SECRET = "**********";

    public static void main(String[] args) throws IOException {

        /**
         * 这里的code 要用于计算sign值,必须是还原成明文。
         * 部分 sign 异常原因是因为 code 值为 base64加密串或encodeURIComponent未被还原造成的
         */
        String code = "<?php echo 'Hello World!';";
        String input= "";//所传代码无需输入时, 此参数传空
        String sign = sign(code,input);
        String lang = "php";

        // post 请求
        FormBody body = new FormBody.Builder()
                .add("appId", APP_ID)
                .add("sign", sign)
                .add("lang", lang)
                .add("code", URLEncoder.encode(Base64.encode(code)))
                .add("input", URLEncoder.encode(Base64.encode(input)))
                .build();
        String result = post("http://jsrun.net/api/run/v2", body);
        System.out.print(result);
    }

    static String sign(String code,String input) {
        return md5(code + input + APP_SECRET);
    }

    static String md5(String str) {
        /**
         * Spring 中建议直接使用 DigestUtils.md5DigestAsHex() 计算md5值
         */
        try {
            byte[] secretBytes = null;
            secretBytes = MessageDigest.getInstance("md5").digest(str.getBytes());

            String md5code = new BigInteger(1, secretBytes).toString(16);
            for (int i = 0; i < 32 - md5code.length(); i++) {
                md5code = "0" + md5code;
            }
            return md5code;
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("没有这个md5算法!");
        }
    }

    static String post(String url, RequestBody body) throws IOException {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url(url).post(body).build();

        try {
            Response response = client.newCall(request).execute();
            if (response.isSuccessful()) {
                return response.body().string();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

}

BASE64 工具类



import java.io.UnsupportedEncodingException;
import java.util.Base64;
public class Base64Util {
    // 加密


    public static String encode(byte[] bytes) {
        try {
            return new String(Base64.getEncoder().encode(bytes), "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String encode(String str) {
        try {
            byte[] b = null;
            String s = null;
            b = str.getBytes("utf-8");

            if (b != null) {
                s = new String(Base64.getEncoder().encode(b), "utf-8");
            }
            return s;
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return null;
    }

    // 解密
    public static String decode(String s) {
        byte[] b = null;
        String result = null;
        if (s != null) {
            try {
                b = Base64.getDecoder().decode(s);
                result = new String(b, "utf-8");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return result;
    }

}
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟