之前用 python ,现在临时学 android 写应用,觉得 java 好死板啊。一个 http post json 请求, python 几行的事, java 20 行才只是完成 http 部分... json 解析又得好多行... - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
gamexg
V2EX    程序员

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

  •  
  •   gamexg 2015-02-23 14:46:20 +08:00 6541 次点击
    这是一个创建于 3954 天前的主题,其中的信息可能已经有所发展或是发生改变。
    HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); try { httppost.setHeader("Content-Type", "application/x-www-form-urlencoded; charset="); 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(); } 
    第 1 条附言    2015-02-23 15:35:45 +08:00
    搜索发现了 apache HttpClient4.2 Fluent API 很舒服,自己仿着封装一个。奇怪 android 就是用的 apache HttpClient ,但是却没有 Fluent API ,可能是版本旧。

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

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

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

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

    总的来说就是就是 布置项目 -> 找开源 - > 找包 -> 修改 -> 完事
    andybest
        27
    andybest  
       2015-02-25 03:43:09 +08:00
    @MASAILA 这几天没上QQ吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2563 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 11:38 PVG 19:38 LAX 03:38 JFK 06:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86