A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 人工智能 于 2018-8-16 15:53 编辑

为了Python的自学党们,黑马真的是拼了!我们不仅有“人工智能+Python学习路线图,还根据以往的经验,总结出学习Python之前的各种问题,想详细了解,从此贴开始吧!!!


Python都说效率高,1个Python工程师=2个PHP工程师=3个Java工程师,这个是什么意思 ?


service api的demo实现,里面有java,php和python三种实现,打开一看,被python这类脚本语言所折服,单从代码量上来说,差别实在是太大,如果都是熟手开发,业务场景也正好适合该语言的话,开发效率自然就不用再说:

扣除掉注释之后:java 56行;php:30行;python:15行


package com.test.http;

import java.io.*;

import java.net.HttpURLConnection;

import java.net.URL;

import java.security.MessageDigest;

import java.math.BigInteger;

public class ApiDemo{

        public static void sendRequest(String id, String secureKey) throws IOException{

                URL request = new URL("xxxxxx?id="+id);

                HttpURLConnection connection = (HttpURLConnection)request.openConnection();

                connection.setDoOutput(true);

                connection.setDoInput(true);

                connection.setRequestMethod("POST");

                connection.setUseCaches(false);

                connection.setInstanceFollowRedirects(true);

                connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

                connection.connect();

                String scanParam = "{\"scanlist\":[{\"sid\":\"123\", \"url\":\"http://dl.test.com/test.apk\", \"md5\":\"3d41f29d762ec547bfa4b42f57f3dc7c\"}]}";

                String authKey = getStringMd5(scanParam + id + secureKey);

                String post = "authkey=" + authKey + "&request=" + scanParam;

        DataOutputStream writeStream = new DataOutputStream(connection.getOutputStream());

        writeStream.writeBytes(post);

        writeStream.flush();

        writeStream.close();

        

        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));

        String line="";

        while ((line = reader.readLine()) != null){

            System.out.println(line);

        }

        reader.close();

        connection.disconnect();

    }        

        public static String getStringMd5(String src) {  

                MessageDigest md;  

                StringBuilder md5 = new StringBuilder();

                try{  

                        md = MessageDigest.getInstance("md5");  

                    md.update(src.getBytes());                     

                    for (byte b : md.digest()) {

                            md5.append(String.format("%02x", b));

                    }

                }

                catch (Exception e) {  

                        e.printStackTrace();  

                }   

                return md5.toString();

        }

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

            try {

                    sendRequest("test", "123456");

            } catch (IOException e) {

                e.printStackTrace();

            }

        }


}






<?php
$id="test";
$secure_key="123456";
$api_url="http://xxxxx?id=".$id;
$scan_parm="{\"scanlist\":[{\"sid\":\"123\", \"url\":\"http://dl.test.com/test.apk\", \"md5\":\"3d41f29d762ec547bfa4b42f57f3dc7c\"}]}";
$authkey=md5($scan_parm.$id.$secure_key);
$post="authkey=".$authkey."&request=".$scan_parm;
$url_info=parse_url($api_url);
if(!isset($url_info["port"])){
        $url_info["port"]=80;
}
$request.="POST ".$url_info["path"]."?".$url_info["query"]." HTTP/1.1\r\n";
$request.="Host: ".$url_info["host"]."\r\n";
$request.="Cache-Control: no-cache\r\n";
$request.="Content-type: application/x-www-form-urlencoded\r\n";
$request.="Accept: text/html\r\n";
$request.="Content-length: ".strlen($post)."\r\n";
$request.="Connection: close\r\n";
$request.="\r\n";
$request.=$post;
$fp = fsockopen($url_info["host"], $url_info["port"]);
if(!$fp){   
        echo "$errstr($errno)\n";   
}
fwrite($fp, $request);
while(!feof($fp)){
    $response .= fgets($fp, 128);
}
echo "$response\n";
?>




#!/usr/bin/python
import httplib, md5
if __name__ == "__main__":
    id="test"
    secure_key="123456"
    scan_param='{"scanlist":[{"sid":"123", "url":"http://xxxxx/test.apk", "md5":"3d41f29d762ec547bfa4b42f57f3dc7c"}]}"'
    authkey=md5.new(scan_param + id + secure_key).hexdigest()
    post= "authkey=%s&request=%s" %(authkey, scan_param)
    domain="xxxxx"
    url_path = "/api/scansoft?id="+id
    headers = {"Content-type": "application/x-www-form-urlencoded"}
    connect = httplib.HTTPConnection(domain)
    connect.request("POST", url_path, post, headers)
    res = connect.getresponse()  
    print res.read()


所以,Python的开发效率极高。


你想要的传送门:




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马