且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

java程序发送HTTP请求

更新时间:2022-07-02 15:24:09

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

有两种实现方式:

1,HttpURLConnection

2,HttpClient

依赖jar包:
java程序发送HTTP请求
 

 

Java代码  java程序发送HTTP请求
  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<String, Object> 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代码  java程序发送HTTP请求
  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<String, String> 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<String, String> 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<String, List<String>> 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