java程序发送HTTP请求

Java 程序如何发送HTTP请求呢?

有两种实现方式:

1,HttpURLConnection

2,HttpClient

依赖jar包:

 

 

Java代码   收藏代码
  1. Object[] resultArr = HttpSocketUtil.httpRequest(url, ssl22,  
  2.                         forcePost22, json_request, contentType,  
  3.                         session, headerMap, falsenull, newEncoding,  
  4.                         1500025000);  
  5.                 if(ValueWidget.isNullOrEmpty(resultArr)){  
  6.                     GUIUtil23.errorDialog("404");  
  7.                     return;  
  8.                 }  
  9.                 byte[] resultJsonBytes = (byte[])resultArr[0];  
  10.                 if (ValueWidget.isNullOrEmpty(resultJsonBytes)) {  
  11.                     resultTA.setText("请检查请求的url 是否正确(" + url + ")");  
  12.                     GUIUtil23.warningDialog("返回结果为空.");  
  13.                     return;  
  14.                 }  
  15.                 String resultJson = new String(resultJsonBytes,  
  16.                         SystemHWUtil.CHARSET_GBK);  
  17.                 String resultJson2 = new String(resultJsonBytes,  
  18.                         SystemHWUtil.CHARSET_UTF);  
  19.   
  20.                 // 把http请求结果(json字符串)转化为map  
  21.                 Map resultMap = null;  
  22.                 // if(!"{}".equals(resultJson2.replaceAll(" ", ""))){//"{}"  
  23.                 resultMap = JsonUtils.getMap(resultJson2);// }  
  24.                 // System.out.println(resultMap);  
  25.                 // 判断该接口是否是启动接口,因为启动接口会返回token  
  26.                 if (!ValueWidget.isNullOrEmpty(resultMap)  
  27.                         && resultMap.containsKey(token_label)) {  
  28.                     addInputBox(token_label, (String)resultMap.get(token_label));  
  29.                 }else{//server not offer token  
  30.                       
  31.                 }  
  32.                 // String sessionID = caseDetail.getSessionId();  
  33.                 // if (!ValueWidget.isNullOrEmpty(sessionID)) {  
  34.                 // addInputBox( sessionId_label, sessionID);  
  35.                 // }  
  36.                 if (!ValueWidget.isNullOrEmpty(resultArr[1])) {  
  37.                     session = (String)resultArr[1];  
  38.                 }  
  39.                 if (!ValueWidget.isNullOrEmpty(session)) {  
  40.                     sessionTF.setText(session);  
  41.                 }  

 

httpRequest的返回值是一个数组:

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

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

2,sessionId

3,contentType:应答的content type;

4,response code:HTTP 状态码

httpRequest 的实现如下:

Java代码   收藏代码
  1. /*** 
  2.      *  
  3.      * @param urlStr 
  4.      * @param ssl 
  5.      * @param forcePost 
  6.      * @param sendData 
  7.      * @param contentType 
  8.      * @param cookie 
  9.      * @param headers 
  10.      * @param isWrite2file 
  11.      * @param destFile 
  12.      * @param charset 
  13.      * @param connectTimeout 
  14.      * @param readTimeout 
  15.      * @return : request result(byte[]) ;sessionId;contentType;response code 
  16.      * @throws Exception 
  17.      */  
  18.     public static Object[] httpRequest(String urlStr, boolean ssl,  
  19.             boolean forcePost, String sendData, String contentType,  
  20.             String cookie, Map headers, boolean isWrite2file,  
  21.             Object destFile, String charset, int connectTimeout, int readTimeout)  
  22.             throws Exception {  
  23.         return httpRequest(urlStr, ssl, forcePost, sendData, contentType,  
  24.                 cookie, headers, isWrite2file, destFile, charset,  
  25.                 connectTimeout, readTimeout, null);  
  26.     }  
  27.   
  28. /*** 
  29.      *  
  30.      * @param urlStr 
  31.      * @param sendData 
  32.      * @param contentType 
  33.      *            : default is application/x-www-form-urlencoded 
  34.      * @param cookie 
  35.      * @param headers 
  36.      *            : request header 
  37.      * @param isWrite2file 
  38.      *            : whether write to file 
  39.      * @param destFile 
  40.      *            file which will be written 
  41.      * @return : request result(byte[]) ;sessionId;contentType;response code 
  42.      * @throws Exception 
  43.      */  
  44.     public static Object[] httpRequest(String urlStr, boolean ssl,  
  45.             boolean forcePost, String sendData, String contentType,  
  46.             String cookie, Map headers, boolean isWrite2file,  
  47.             Object destFile, String charset, int connectTimeout,  
  48.             int readTimeout, String sizeHeadKey) throws Exception {  
  49.         // URL url = new URL(urlString);  
  50.         if (isDetail)  
  51.             System.out.println("ssl:" + ssl);  
  52.         HttpURLConnection huc = beforeConnect(urlStr, ssl, forcePost, sendData,  
  53.                 contentType, cookie, headers, charset, connectTimeout,  
  54.                 readTimeout);  
  55.   
  56.         File writeFile = null;  
  57.         if (destFile instanceof File) {  
  58.             writeFile = (File) destFile;  
  59.         } else {  
  60.             if (!ValueWidget.isNullOrEmpty(destFile)) {  
  61.                 writeFile = new File((String) destFile);  
  62.             }  
  63.         }  
  64.         if (isDetail)  
  65.             System.out.println("writeFile:" + writeFile);  
  66.         //应答码,返回码  
  67.         int resCode = huc.getResponseCode();  
  68.         byte[] result = connection(resCode,huc, isWrite2file, writeFile, sizeHeadKey);  
  69.         if (!isWrite2file && (result == null)) {  
  70.             System.out  
  71.                     .println("[HttpSocketUtil.httpRequest]connection return is null.");  
  72.             return null;  
  73.         }  
  74.         if (!ValueWidget.isNullOrEmpty(result)) {  
  75.             System.out.println("read result length of bytes:" + result.length);  
  76.         }  
  77.         Object[] retArr = new Object[3];  
  78.         String session_value = huc  
  79.                 .getHeaderField(SystemHWUtil.KEY_HEADER_COOLIE);  
  80.         // Map> responseHeaders = huc.getHeaderFields();  
  81.         // for (Iterator it = responseHeaders.keySet().iterator();  
  82.         // it.hasNext();) {  
  83.         // System.out.println("key:" + it.next());  
  84.         // }  
  85.         if (ValueWidget.isHasValue(session_value)) {  
  86.             String[] sessionId = session_value.split(";");  
  87.             retArr[1] = sessionId[0];  
  88.             if (isDetail) {  
  89.                 System.out  
  90.                         .println("[HttpSocketUtil.httpRequest]session id is :"  
  91.                                 + sessionId[0]);  
  92.             }  
  93.         }  
  94.         retArr[2] = huc.getContentType();  
  95.         retArr[3] = resCode;  
  96.         retArr[0] = result;  
  97.         // if (isWrite2file && destFile != null) {  
  98.         // byte[] bytes = (byte[]) result;  
  99.         //  
  100.         // FileUtils.writeBytesToFile(bytes, writeFile);  
  101.         // }  
  102.         return retArr;  
  103.     }  

源码见:com.http.util.HttpSocketUtil 

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

你可能感兴趣的:(java,json)