天天看点

java程序发送HTTP请求

有两种实现方式:

1,httpurlconnection

2,httpclient

依赖jar包:

java程序发送HTTP请求
java程序发送HTTP请求

object[] resultarr = httpsocketutil.httprequest(url, ssl22,  

                        forcepost22, json_request, contenttype,  

                        session, headermap, false, null, newencoding,  

                        15000, 25000);  

                if(valuewidget.isnullorempty(resultarr)){  

                    guiutil23.errordialog("404");  

                    return;  

                }  

                byte[] resultjsonbytes = (byte[])resultarr[0];  

                if (valuewidget.isnullorempty(resultjsonbytes)) {  

                    resultta.settext("请检查请求的url 是否正确(" + url + ")");  

                    guiutil23.warningdialog("返回结果为空.");  

                string resultjson = new string(resultjsonbytes,  

                        systemhwutil.charset_gbk);  

                string resultjson2 = new string(resultjsonbytes,  

                        systemhwutil.charset_utf);  

                // 把http请求结果(json字符串)转化为map  

                map<string, object> resultmap = null;  

                // if(!"{}".equals(resultjson2.replaceall(" ", ""))){//"{}"  

                resultmap = jsonutils.getmap(resultjson2);// }  

                // system.out.println(resultmap);  

                // 判断该接口是否是启动接口,因为启动接口会返回token  

                if (!valuewidget.isnullorempty(resultmap)  

                        && resultmap.containskey(token_label)) {  

                    addinputbox(token_label, (string)resultmap.get(token_label));  

                }else{//server not offer token  

                // string sessionid = casedetail.getsessionid();  

                // if (!valuewidget.isnullorempty(sessionid)) {  

                // addinputbox( sessionid_label, sessionid);  

                // }  

                if (!valuewidget.isnullorempty(resultarr[1])) {  

                    session = (string)resultarr[1];  

                if (!valuewidget.isnullorempty(session)) {  

                    sessiontf.settext(session);  

httprequest的返回值是一个数组:

返回数组有4个元素,分别是:

1,request result(byte[]):应答体

2,sessionid

3,contenttype:应答的content type;

4,response code:http 状态码

httprequest 的实现如下:

java程序发送HTTP请求

/*** 

     *  

     * @param urlstr 

     * @param ssl 

     * @param forcepost 

     * @param senddata 

     * @param contenttype 

     * @param cookie 

     * @param headers 

     * @param iswrite2file 

     * @param destfile 

     * @param charset 

     * @param connecttimeout 

     * @param readtimeout 

     * @return : request result(byte[]) ;sessionid;contenttype;response code 

     * @throws exception 

     */  

    public static object[] httprequest(string urlstr, boolean ssl,  

            boolean forcepost, string senddata, string contenttype,  

            string cookie, map<string, string> headers, boolean iswrite2file,  

            object destfile, string charset, int connecttimeout, int readtimeout)  

            throws exception {  

        return httprequest(urlstr, ssl, forcepost, senddata, contenttype,  

                cookie, headers, iswrite2file, destfile, charset,  

                connecttimeout, readtimeout, null);  

    }  

     *            : default is application/x-www-form-urlencoded 

     *            : request header 

     *            : whether write to file 

     *            file which will be written 

            object destfile, string charset, int connecttimeout,  

            int readtimeout, string sizeheadkey) throws exception {  

        // url url = new url(urlstring);  

        if (isdetail)  

            system.out.println("ssl:" + ssl);  

        httpurlconnection huc = beforeconnect(urlstr, ssl, forcepost, senddata,  

                contenttype, cookie, headers, charset, connecttimeout,  

                readtimeout);  

        file writefile = null;  

        if (destfile instanceof file) {  

            writefile = (file) destfile;  

        } else {  

            if (!valuewidget.isnullorempty(destfile)) {  

                writefile = new file((string) destfile);  

            }  

        }  

            system.out.println("writefile:" + writefile);  

        //应答码,返回码  

        int rescode = huc.getresponsecode();  

        byte[] result = connection(rescode,huc, iswrite2file, writefile, sizeheadkey);  

        if (!iswrite2file && (result == null)) {  

            system.out  

                    .println("[httpsocketutil.httprequest]connection return is null.");  

            return null;  

        if (!valuewidget.isnullorempty(result)) {  

            system.out.println("read result length of bytes:" + result.length);  

        object[] retarr = new object[3];  

        string session_value = huc  

                .getheaderfield(systemhwutil.key_header_coolie);  

        // map<string, list<string>> responseheaders = huc.getheaderfields();  

        // for (iterator<?> it = responseheaders.keyset().iterator();  

        // it.hasnext();) {  

        // system.out.println("key:" + it.next());  

        // }  

        if (valuewidget.ishasvalue(session_value)) {  

            string[] sessionid = session_value.split(";");  

            retarr[1] = sessionid[0];  

            if (isdetail) {  

                system.out  

                        .println("[httpsocketutil.httprequest]session id is :"  

                                + sessionid[0]);  

        retarr[2] = huc.getcontenttype();  

        retarr[3] = rescode;  

        retarr[0] = result;  

        // if (iswrite2file && destfile != null) {  

        // byte[] bytes = (byte[]) result;  

        //  

        // fileutils.writebytestofile(bytes, writefile);  

        return retarr;  

源码见:com.http.util.httpsocketutil 

下载地址:http://pan.baidu.com/s/1hqexbhe