V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gamexg
V2EX  ›  程序员

之前用 python ,现在临时学 android 写应用,觉得 java 好死板啊。一个 http post json 请求, python 几行的事, java 20 行才只是完成 http 部分... json 解析又得好多行...

  •  
  •   gamexg · Feb 23, 2015 · 6737 views
    This topic created in 4094 days ago, the information mentioned may be changed or developed.
    HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(url);
    
                try {
                    httppost.setHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
    
                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(4);
                    nameValuePairs.add(new BasicNameValuePair("*", *));
                    nameValuePairs.add(new BasicNameValuePair("*", *));
                    nameValuePairs.add(new BasicNameValuePair("*", *));
                    nameValuePairs.add(new BasicNameValuePair("*", *));
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
    
                    HttpResponse response;
                    String result = null;
                    response = httpclient.execute(httppost);
    
    
                    if (response.getStatusLine().getStatusCode() == 200) {
    
                        HttpEntity entity = response.getEntity();
                        result = EntityUtils.toString(entity, HTTP.UTF_8);
                    }
                    Log.i(TAG, "result:" + result);
                    return result;
    
    
                } catch (ClientProtocolException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
    Supplement 1  ·  Feb 23, 2015
    搜索发现了 apache HttpClient4.2 Fluent API 很舒服,自己仿着封装一个。奇怪 android 就是用的 apache HttpClient ,但是却没有 Fluent API ,可能是版本旧。

    android 和后台通信的地方还不少,全部用原来的写法能烦死了。
    27 replies    2015-02-25 03:43:09 +08:00
    funky
        1
    funky  
       Feb 23, 2015   ❤️ 1
    易读性与代码长度的取舍。
    njulzp
        2
    njulzp  
       Feb 23, 2015   ❤️ 1
    用 c 试试
    Mirana
        3
    Mirana  
       Feb 23, 2015   ❤️ 1
    用继承或者代理模式
    ozking
        4
    ozking  
       Feb 23, 2015   ❤️ 1
    请自行搜索library再来吐槽
    lincanbin
        5
    lincanbin  
       Feb 23, 2015   ❤️ 2
    不封装怪谁啊?
    像大学生初学C语言,会花个几百行来实现一个introsort,你说python一行sort就实现了然后把C语言批判一番?
    Rocko
        6
    Rocko  
       Feb 23, 2015 via Android   ❤️ 2
    你这是在走路,请找个代步工具。
    mthli
        7
    mthli  
       Feb 23, 2015 via Android   ❤️ 2
    gamexg
        8
    gamexg  
    OP
       Feb 23, 2015
    retrofit 看着更厉害。

    感谢大家,先离开下,回来后细看。
    fashioncj
        9
    fashioncj  
       Feb 23, 2015
    这个也就是一次完成的东西。
    fankay
        10
    fankay  
       Feb 23, 2015 via Android
    你可以试试okhttp
    sandideas
        11
    sandideas  
       Feb 23, 2015
    @lincanbin C也有qsort
    wdlth
        12
    wdlth  
       Feb 23, 2015   ❤️ 1
    表面上你用Python是几行,但是Python实现这个功能得写多少行?这是前人栽树,后人乘凉。
    Troevil
        13
    Troevil  
       Feb 23, 2015
    java 封装完不也是一两行的事
    MASAILA
        14
    MASAILA  
       Feb 23, 2015 via Android
    http://loopj.com/android-async-http/
    我比较喜欢用这个
    kzzhr
        15
    kzzhr  
       Feb 23, 2015
    首先要学会java程序员的思维。。。

    不是想黑,只是说一下场景下的区别:
    我们现在需要一个把一个单词转大写
    C程序员:枚举修改就好了
    Java程序员:找包啊!
    我们现在需要排个序
    C程序员:快排分分钟搞定
    Java程序员:找包啊!
    zhengkai
        16
    zhengkai  
       Feb 23, 2015   ❤️ 1
    Java 是典型的码农语言,就是主要为了给管事的看的,而不是为了给干活的写的

    偶尔饭后闲扯,有同事是精通 Java、能从字节码 debug 的,跟我说,你敢说我大 Java 不好?!我说这个语言,要是让二三十个人去写,你定义好接口,那二三十个人填空,你肯定觉得 Java 是非常好的语言,但大部分写 Java 的都是那二三十个人里头的,我之前在一个公司呆过几个月,那里大部分人都是干了很多年对日外包,说他们的工作量可以精确到小时的,在我看来这真的是流水线的工人,干了好多年,还什么都不知道,只会填空。同事听完想了想,说从你这个角度说是对的
    pandada8
        17
    pandada8  
       Feb 23, 2015
    @kzzhr Python: 内置啊(笑
    petercai
        18
    petercai  
       Feb 23, 2015 via Android
    有个玩意儿叫Jython
    msg7086
        19
    msg7086  
       Feb 23, 2015
    @pandada8 Ruby: →_→
    lch21
        20
    lch21  
       Feb 23, 2015   ❤️ 1
    当年学X Window编程,200多行开了个窗口,打印了一行Hello world,激动得热泪盈眶
    tuoxie007
        21
    tuoxie007  
       Feb 23, 2015
    吐槽Java有个蛋用呢,去Google楼下举牌子啊
    Tiande
        22
    Tiande  
    PRO
       Feb 23, 2015 via iPhone
    @zhengkai 高级搬砖工的感觉…
    fatea
        23
    fatea  
       Feb 23, 2015 via iPhone
    用Volley啊,现在官方教程都提这个。
    fatea
        24
    fatea  
       Feb 23, 2015 via iPhone
    像楼主例子里面的小数据不用Volley干嘛呢?什么都不用管,也不用考虑线程了。
    schezuk
        25
    schezuk  
       Feb 24, 2015
    想起几年前在书店里看见的《Win32ASM编程》了……
    还有纯C用Win32 SDK写Form
    miao1007
        26
    miao1007  
       Feb 24, 2015   ❤️ 1
    Volley ,Retrofit, async-http都是很好的库。

    总的来说就是就是 布置项目 -> 找开源 - > 找包 -> 修改 -> 完事
    andybest
        27
    andybest  
       Feb 25, 2015
    @MASAILA 这几天没上QQ吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3053 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 120ms · UTC 12:46 · PVG 20:46 · LAX 05:46 · JFK 08:46
    ♥ Do have faith in what you're doing.