美文网首页
IDEA社区版创建springboot web项目

IDEA社区版创建springboot web项目

作者: 独孤流 | 来源:发表于2019-09-15 17:28 被阅读0次

IDEA社区版+springboot创建项目(图解流程0
Spring Boot 返回 JSON 数据及数据封装
Springboot启动后外部无法通过IP+端口方式访问,只能本地访问localhost
Springboot中使用Xstream进行XML与Bean 相互转换
ava开发之调用shell命令并获取执行结果(Mac)
Java ArrayList、string、string[]之间的转换
Springboot后台设置允许跨域的方法
org.springframework.web.HttpMediaTypeNotSupported...
user-agent对应的型号

获取JavaUDID上传

@RequestMapping(value = "/uploadUDID",method  = {RequestMethod.GET,RequestMethod.POST})
    public void uploadUDID(HttpServletRequest request,HttpServletResponse response){

        try {
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("UTF-8");
            //获取HTTP请求的输入流
            InputStream is = request.getInputStream();
            //已HTTP请求输入流建立一个BufferedReader对象
            BufferedReader br = new BufferedReader(new InputStreamReader(is,"UTF-8"));
            StringBuilder sb = new StringBuilder();

            //读取HTTP请求内容
            String buffer = null;
            while ((buffer = br.readLine()) != null) {
                sb.append(buffer);
            }
            String content = sb.toString().substring(sb.toString().indexOf("<?xml"), sb.toString().indexOf("</plist>")+8);
            //content就是接收到的xml字符串
            content = content.replaceAll("\t","");
            int from = content.indexOf("<dict>")+"<dict>".length();
            content = content.substring(from);
            int to = content.indexOf("</dict>");
            content = content.substring(0,to);
            content = content.replaceAll("<key>","");
            content = content.replaceAll("</key>","=");
            content = content.replaceAll("<string>","");
            content = content.replaceAll("</string>","#*#");
            HashMap<String,String> plistMap = new HashMap<String,String>();
            String[] list = content.split("#*#");
            for (String var : list){
                String[] keyVals = var.split("=");
               if(keyVals.length == 2){
                   plistMap.put(keyVals[0],keyVals[1]);
               }
            }
            System.out.println(plistMap);
            String udid = plistMap.get("UDID");
            response.setStatus(301); //301之后iOS设备会自动打开safari浏览器
            response.setHeader("Location", "http://192.168.3.57:8080/mysign/index2.html?UDID="+udid);
            //http://192.168.1.106:8080/udid.jsp 是用于显示udid的页面,也可以利用之前的下载mobileprofile文件页面
        }catch (Exception e){

        }

@RequestMapping(value = "/createUDIDConfig",method  = {RequestMethod.GET,RequestMethod.POST})
    public String createUDIDCnofig(){

        String cmd = "/bin/bash";
        String path = "/Users/tony/fastlane_workspace/SuperSign/test.sh";
        HashMap<String,String> shParams = new HashMap();
        String uuid =  UUID.randomUUID().toString().replace("-", "");
        shParams.put("--playload_udid",uuid);
        shParams.put("--playload_url","http://192.168.3.57:8091/json/uploadUDID");
        shParams.put("--playload_name","红苹果绿菠萝");
        HashMap resultMap = exec(cmd,path,shParams);
        return (String) resultMap.get("msg");

    }

    public HashMap<String,Object> exec(String cmd,String path,HashMap<String,String> params) {
        HashMap<String,Object> resultMap = new HashMap<String,Object>();

        ArrayList<String> commandList = new ArrayList<String>();
        commandList.add(cmd);
        commandList.add(path);
        for (String key : params.keySet()) {
            commandList.add(key+"="+params.get(key));
        }
        String[] commandArray = (String[])commandList.toArray(new String[commandList.size()]);
        int exitValue = 0;
        String resultString = "";
        try {
            Process process = Runtime.getRuntime().exec(commandArray);
            exitValue = process.waitFor();
            BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = input.readLine()) != null) {
                resultString = resultString + line + "<br/>";
            }
            input.close();
            process.destroy();
        }catch (Exception e){
            e.printStackTrace();
        }

        resultMap.put("code",exitValue);
        resultMap.put("msg",resultString);
        return resultMap;
    }

 @RequestMapping(value = "/createProvisioning",method  = {RequestMethod.GET,RequestMethod.POST})
    public String createProvisioning(){

        String cmd = "/bin/bash";
        String path = "/Users/tony/fastlane_workspace/SuperSign/create_provision.sh";
        HashMap<String,String> shParams = new HashMap();
        String bundleId = "com.ak.rf.hoc.hello";
        String device_udid =  "942d4763983c8219082fd8218e5a4f53265495f8";
        String provision_path = "abchhhh123.mobileprovision";
        shParams.put("--bundleId",bundleId);
        shParams.put("--device_udid",device_udid);
        shParams.put("--provision_path",provision_path);
        HashMap resultMap = exec(cmd,path,shParams);
        return (String) resultMap.get("msg");

    }
private String getIpAdrress(HttpServletRequest request) {
        String agent = request.getHeader("user-agent");
        System.out.println("user-agent: "+agent);
        String Xip = request.getHeader("X-Real-IP");
        String XFor = request.getHeader("X-Forwarded-For");
        if(XFor != null && !XFor.isEmpty() && !"unKnown".equalsIgnoreCase(XFor)){
            //多次反向代理后会有多个ip值,第一个ip才是真实ip
            int index = XFor.indexOf(",");
            if(index != -1){
                return XFor.substring(0,index);
            }else{
                return XFor;
            }
        }
        XFor = Xip;
        if(XFor != null && !XFor.isEmpty() && !"unKnown".equalsIgnoreCase(XFor)){
            return XFor;
        }
        if (XFor == null || XFor.isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
            XFor = request.getHeader("Proxy-Client-IP");
        }
        if (XFor == null || XFor.isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
            XFor = request.getHeader("WL-Proxy-Client-IP");
        }
        if (XFor == null || XFor.isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
            XFor = request.getHeader("HTTP_CLIENT_IP");
        }
        if (XFor == null || XFor.isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
            XFor = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (XFor == null || XFor.isEmpty() || "unknown".equalsIgnoreCase(XFor)) {
            XFor = request.getRemoteAddr();
        }
        return XFor;
    }
    }

{
SERIAL=FK3VQJ6JJCL6,
CHALLENGE=4C1B718D-A51D-7430-2AE1-F02C9868CCB3_1566645538_49e7e7ebe0a1e399095960365c8a5d6d, PRODUCT=iPhone10,3,
VERSION=16G77,
UDID=942d4763983c8219082fd8218e5a4f53265495f8
}

#! /bin./bash

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
#脚本所在的文件夹
__filePath=$(dirname "$0")
__filePath2=`pwd`
__srcPath=$__filePath
__absolutePath="/Users/tony/fastlane_workspace/SuperSign"

source "$__srcPath/parseParams.sh"


bundleId=`parseParams $@ "--bundleId"`
device_udid=`parseParams $@ "--device_udid"`
provision_path=`parseParams $@ "--provision_path"`
provision_path=`echo "/Users/tony/fastlane_workspace/SuperSign/$provision_path"`
echo "========================<br/>"
echo "bundleId: $bundleId<br/>"
echo "device_udid: $device_udid<br/>"
echo "provision_path: $provision_path<br/>"
echo "=========通过UDID生成证书===============<br/>"
cd /Users/tony/fastlane_workspace/SuperSign
fastlane custom_spaceship \
bundleId:$bundleId \
device_udid:$device_udid \
provision_path:$provision_path

echo "============重签名==============="
ipa_path="/Users/tony/fastlane_workspace/SuperSign/5d638d7045434.ipa"
sign_identity="iPhone Distribution: Nevin Mia (H4ZBQUPR3Q)"
output_path="$__absolutePath/hello.ipa"
# fastlane sigh resign $ipa_path \
# --signing_identity "iPhone Distribution: Nevin Mia (H4ZBQUPR3Q)" \
# -p $provision_path
#-c  "iPhone Distribution: Nevin Mia (H4ZBQUPR3Q)"  \
./CoolResign \
 -i $ipa_path \
 -p $provision_path \
  -c  "$sign_identity"  \
  -o $output_path \
  -b  "com.ak.jd"

  echo "============生成下载描述文件==============="
  download_path="$__absolutePath/download.plist"
   cat > "$download_path" << END_TEXT
  <plist version="1.0">
      <dict>
      <key>items</key>
      <array>
      <dict>
      <key>assets</key>
      <array>
      <dict>
      <key>kind</key>
      <string>software-package</string>
      <key>url</key>
      <string>
      https://d-hk.ggonet.cn/ipasigned/5d638d7045434.ipa?s=c0aaddc450f110f7d1c41713348ae398
      </string>
      </dict>
      <dict>
      <key>kind</key>
      <string>display-image</string>
      <key>needs-shine</key>
      <true/>
      <key>url</key>
      <string>https://static.app2.cn/icon/5d63a67a1f8d6.png</string>
      </dict>
      <dict>
      <key>kind</key>
      <string>full-size-image</string>
      <key>needs-shine</key>
      <true/>
      <key>url</key>
      <string>https://static.app2.cn/icon/5d63a67a1f8d6.png</string>
      </dict>
      </array>
      <key>metadata</key>
      <dict>
      <key>bundle-identifier</key>
      <string>$bundle_id</string>
      <key>bundle-version</key>
      <string>1.0.52</string>
      <key>kind</key>
      <string>software</string>
      <key>subtitle</key>
      <string/>
      <key>title</key>
      <string>ak彩票本地</string>
      </dict>
      </dict>
      </array>
      </dict>
      </plist>
END_TEXT

echo "====生成下载文件成功======"
cat $download_path


JS跨域保存获取数据

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="edge">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="renderer" content="webkit">
    <meta name="renderer" content="ie-comp">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <meta name="format-detection" content="email=no">
  </head>
  <body>
    <a href="javascript:askB();">ask</a>
    <iframe id="ifr" src="http://192.168.3.57:8080/web2/b.html" style="display:none;" ></iframe>
      <script type="text/javascript">
          window.addEventListener('message', function(e){
              // console.log('A get message from B ');
              // console.log(e.data);
              let serialId = e.data.serialId;
              if(window.temp_response_localstorage_iframe_all_functions && window.temp_response_localstorage_iframe_all_functions[serialId]){
                let func = window.temp_response_localstorage_iframe_all_functions[serialId];
                window.temp_response_localstorage_iframe_all_functions[serialId] = undefined;
                func(e.data);
              }
              // console.log(e.data);
          }, false);
          function sendFramMessage(data,callback){
            let serialId="sendFramMessage"+Date.now()+"-"+Math.random().toString(36).slice(-8);
            let form = {"serialId": serialId};
            // console.log('before', form);
            Object.assign(form, data);
            // console.log("after",form);
            if (callback){
              if (!window.temp_response_localstorage_iframe_all_functions){
                window.temp_response_localstorage_iframe_all_functions = {};
              }
              window.temp_response_localstorage_iframe_all_functions[serialId] = callback;
            }

            var ifr = document.querySelector('#ifr');
            ifr.contentWindow.postMessage(form, '*');
          }
      </script>

    <script type="text/javascript">
      window.onload = function(){
          askB();
       }
      function askB(){
        //sendFramMessage();
        sendFramMessage({"method":"get","name":"deviceId"},function(data){
          console.log(">>>>>>>>");
          console.log(data);
          if(data.deviceId && "undefined" != data.deviceId){
            console.log("+++++拿到了deviceId+++++");
            console.log(data.deviceId);
          }else{
            console.log("--------没有deviceId-------")
            sendFramMessage({"method":"save","name":"deviceId","val":"324750389qwer"},function(){
              askB();
            });
          }
        });
      }
    </script>

    </body>
  </html>

用于临时通信保存跨域访问的B网站的b.html

<!DOCTYPE html>
<html>
      <script type="text/javascript">
        window.addEventListener('message', function(e){
            // console.log('B get message from A ' );
            // console.log(e.data)
            let form = {"serialId": e.data.serialId,"method":e.data.method};
            if(e.data.method == "get"){
                  var saveVal = window.localStorage[e.data.name];
                  // console.log("B send message begin");
                  let responseData = {};
                  if(saveVal && undefined != saveVal && "undefined" != saveVal){
                    responseData[e.data.name] = saveVal;
                  }
                  Object.assign(form, responseData);
                  e.source.postMessage(form, '*');
            }else if (e.data.method == "save") {
                window.localStorage[e.data.name]=e.data.val;
                let responseData = {};
                // console.log("B send message begin");
                Object.assign(form, responseData);
                e.source.postMessage(form, '*');
            }else{
              // console.log("B send message begin");
              let responseData = {"deviceId":deviceId};
              Object.assign(form, responseData);
              e.source.postMessage(form, '*');
            }

        }, false);
      </script>
  </html>


相关文章

网友评论

      本文标题:IDEA社区版创建springboot web项目

      本文链接:https://www.haomeiwen.com/subject/zunmectx.html