关于嘀咕上传图片

嘀咕是个小气的网站,这一点没错,不但乱封人家帐号不打招呼,连图片都不让好好传。本来还可以通过wap接口上传的,可是没用多久就被嘀咕那个倒霉孩子封锁了,虽然可以通过修改User-Agent上传,但是这样做是很麻烦的,作为很麻烦会死星人的一员,我再一次去触摸了嘀咕的G点。
bake03


嘀咕有一个所谓的“第三方”应用:嘀个头。这名字起的真艺术啊。为什么叫所谓的第三方应用呢?因为老熊我一直不能理解为什么第三方应用可以使用一个嘀咕没有公开的API呢- -。
这个API的地址是”http://www.digu.com/api/loveDigu_3.jsp?mid=%s&key=%s&diguContent=%s&imgcount=1″ 其中参数分别代表含义如下:

mid是登录用户名、key是密码、diguContent是消息内容。

上面的参数都需要进行URLEncode,这个是常识。

要传图片的话可以直接POST这个URL,但是与标准POST不太一样的是请求的Content-Type应该是“application/octet-stream” 而不是我们平时用的“application/x-www-form-urlencoded” 或者 “multipart/form-data” 。然后POST的内容就是图片文件的数据。

恩,这些可以通过下面的代码实现,Java的:

    public void upload() throws Exception {
        String user = URLEncoder.encode(jtxtUser.getText(), "utf-8");
        String pass = URLEncoder.encode(jtxtPwd.getText(), "utf-8");
        String mesg = URLEncoder.encode(jtxtMsg.getText(), "utf-8");
        String surl = String.format("http://www.digu.com/api/loveDigu_3.jsp?mid=%s&key=%s&diguContent=%s&imgcount=1", user, pass, mesg);
        System.out.println("URL=" + surl);
        URL url = new URL(surl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; zh-cn) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/4A102 Safari/419.3 AdobeAIR/1.0"); //这个可有可无,目前似乎还没有检测UA
        conn.setRequestProperty("Content-Type", "application/octet-stream");
        conn.setDoOutput(true);
        BufferedOutputStream os = new BufferedOutputStream(conn.getOutputStream());
        BufferedInputStream is = new BufferedInputStream(new FileInputStream(jtxtFile.getText()));
        try {
            byte[] buff = new byte[4096];
            int len = 0;
            while ((len = is.read(buff)) != -1) {
                os.write(buff, 0, len);
            }
        } finally {
            is.close();
            os.close();
        }
        BufferedReader r = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String s = null;
        while ((s = r.readLine()) != null) {
            System.out.println(s);
        }
    }

完整的代码在这里。如果你想直接运行,可以点这里(需要JRE和Java Web Start)
fuckdigu
另外……今天嘀咕终于也维护了,借用中科的话来说就是“一早上起来发现继昨天校内、51之后嘀咕也维护了。看个日全尸都这么紧张,桂国正腐,你们太狠了!”

>_<|| 我手贱!!这个有问题!绝对有问题!!一般般啦,真的很一般般。还不错哦~小表扬一下!GJ!乃就是新世界的神様了,快去拯救世界吧! (1 votes, average: 1.00 out of 5)
Loading...

一人吐槽

  1. icebugger说道:
    骑着 Google Chrome 2.0.172.37 Google Chrome 2.0.172.37 和 Windows XP Windows XP
    Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/530.5 (KHTML, like Gecko) Chrome/2.0.172.37 Safari/530.5

    看个日全尸都这么紧张,桂国正腐,你们太狠了!
    ————————————————
    囧,话说“滴个投”这名字很ORZ。。。。

春菜 对话 相声
双击调戏
双击调戏