JAVA解析応答HTTPリクエスト

43621 ワード

  1 //http   

  2 import java.io.BufferedReader;

  3 import java.io.IOException;

  4 import java.io.InputStream;

  5 import java.io.InputStreamReader;

  6 import java.net.HttpURLConnection;

  7 import java.net.URL;

  8 import java.nio.charset.Charset;

  9 import java.util.Map;

 10 import java.util.Vector;

 11 /**

 12  * HTTP  

 13  */

 14 public class HttpRequester

 15 {

 16     /**

 17      *        

 18      */

 19     private String defaultContentEncoding;

 20     public HttpRequester()

 21     {

 22         this.defaultContentEncoding = Charset.defaultCharset().name();

 23     }

 24     /**

 25      *   GET  

 26      * @param urlString URL  

 27      * @return     

 28      * @throws IOException

 29      */

 30     public HttpRespons sendGet(String urlString) throws IOException

 31     {

 32         return this.send(urlString, "GET", null, null);

 33     }

 34     /**

 35      *   GET  

 36      * @param urlString URL  

 37      * @param params     

 38      * @return     

 39      * @throws IOException

 40      */

 41     public HttpRespons sendGet(String urlString, Map<String, String> params) throws IOException

 42     {

 43         return this.send(urlString, "GET", params, null);

 44     }

 45     /**

 46      *   GET  

 47      * @param urlString URL  

 48      * @param params     

 49      * @param propertys     

 50      * @return     

 51      * @throws IOException

 52      */

 53     public HttpRespons sendGet(String urlString, Map<String, String> params, Map<String, String> propertys) throws IOException

 54     {

 55         return this.send(urlString, "GET", params, propertys);

 56     }

 57     /**

 58      *   POST  

 59      * @param urlString URL  

 60      * @return     

 61      * @throws IOException

 62      */

 63     public HttpRespons sendPost(String urlString) throws IOException

 64     {

 65         return this.send(urlString, "POST", null, null);

 66     }

 67     /**

 68      *   POST  

 69      * @param urlString URL  

 70      * @param params     

 71      * @return     

 72      * @throws IOException

 73      */

 74     public HttpRespons sendPost(String urlString, Map<String, String> params) throws IOException

 75     {

 76         return this.send(urlString, "POST", params, null);

 77     }

 78     /**

 79      *   POST  

 80      * @param urlString URL  

 81      * @param params     

 82      * @param propertys     

 83      * @return     

 84      * @throws IOException

 85      */

 86     public HttpRespons sendPost(String urlString, Map<String, String> params, Map<String, String> propertys) throws IOException

 87     {

 88         return this.send(urlString, "POST", params, propertys);

 89     }

 90     /**

 91      *   HTTP  

 92      * @param urlString

 93      * @return     

 94      * @throws IOException

 95      */

 96     private HttpRespons send(String urlString, String method, Map<String, String> parameters, Map<String, String> propertys) throws IOException

 97     {

 98         HttpURLConnection urlConnection = null;

 99         if (method.equalsIgnoreCase("GET") && parameters != null)

100         {

101             StringBuffer param = new StringBuffer();

102             int i = 0;

103             for (String key : parameters.keySet())

104             {

105                 if (i == 0)

106                     param.append("?");

107                 else

108                     param.append("&");

109                 param.append(key).append("=").append(parameters.get(key));

110                 // param.append(parameters.get(key));

111                 i++;

112             }

113             urlString += param;

114         }

115         URL url = new URL(urlString);

116         urlConnection = (HttpURLConnection) url.openConnection();

117         urlConnection.setRequestMethod(method);

118         urlConnection.setDoOutput(true);

119         urlConnection.setDoInput(true);

120         urlConnection.setUseCaches(false);

121         if (propertys != null)

122         {

123             for (String key : propertys.keySet())

124             {

125                 urlConnection.addRequestProperty(key, propertys.get(key));

126             }

127         }

128         if (method.equalsIgnoreCase("POST") && parameters != null)

129         {

130             StringBuffer param = new StringBuffer();

131             for (String key : parameters.keySet())

132             {

133                 param.append("&");

134                 param.append(key).append("=").append(parameters.get(key));

135                 // param.append(parameters.get(key));

136             }

137             urlConnection.getOutputStream().write(param.toString().getBytes());

138             urlConnection.getOutputStream().flush();

139             urlConnection.getOutputStream().close();

140         }

141         return this.makeContent(urlString, urlConnection);

142     }

143     /**

144      *       

145      * @param urlConnection

146      * @return     

147      * @throws IOException

148      */

149     private HttpRespons makeContent(String urlString, HttpURLConnection urlConnection) throws IOException

150     {

151         HttpRespons httpResponser = new HttpRespons();

152         try

153         {

154             InputStream in = urlConnection.getInputStream();

155             BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));

156             httpResponser.contentCollection = new Vector<String>();

157             StringBuffer temp = new StringBuffer();

158             String line = bufferedReader.readLine();

159             while (line != null)

160             {

161                 httpResponser.contentCollection.add(line);

162                 temp.append(line).append("\r
"); 163 line = bufferedReader.readLine(); 164 } 165 bufferedReader.close(); 166 String ecod = urlConnection.getContentEncoding(); 167 if (ecod == null) 168 ecod = this.defaultContentEncoding; 169 httpResponser.urlString = urlString; 170 httpResponser.defaultPort = urlConnection.getURL().getDefaultPort(); 171 httpResponser.file = urlConnection.getURL().getFile(); 172 httpResponser.host = urlConnection.getURL().getHost(); 173 httpResponser.path = urlConnection.getURL().getPath(); 174 httpResponser.port = urlConnection.getURL().getPort(); 175 httpResponser.protocol = urlConnection.getURL().getProtocol(); 176 httpResponser.query = urlConnection.getURL().getQuery(); 177 httpResponser.ref = urlConnection.getURL().getRef(); 178 httpResponser.userInfo = urlConnection.getURL().getUserInfo(); 179 httpResponser.content = new String(temp.toString().getBytes(), ecod); 180 httpResponser.contentEncoding = ecod; 181 httpResponser.code = urlConnection.getResponseCode(); 182 httpResponser.message = urlConnection.getResponseMessage(); 183 httpResponser.contentType = urlConnection.getContentType(); 184 httpResponser.method = urlConnection.getRequestMethod(); 185 httpResponser.connectTimeout = urlConnection.getConnectTimeout(); 186 httpResponser.readTimeout = urlConnection.getReadTimeout(); 187 return httpResponser; 188 } 189 catch (IOException e) 190 { 191 throw e; 192 } 193 finally 194 { 195 if (urlConnection != null) 196 urlConnection.disconnect(); 197 } 198 } 199 /** 200 * 201 */ 202 public String getDefaultContentEncoding() 203 { 204 return this.defaultContentEncoding; 205 } 206 /** 207 * 208 */ 209 public void setDefaultContentEncoding(String defaultContentEncoding) 210 { 211 this.defaultContentEncoding = defaultContentEncoding; 212 } 213 } 214
  1 import java.util.Vector;

  2 /**

  3  * HTTP     

  4  */

  5 public class HttpRespons

  6 {

  7     String urlString;

  8     int defaultPort;

  9     String file;

 10     String host;

 11     String path;

 12     int port;

 13     String protocol;

 14     String query;

 15     String ref;

 16     String userInfo;

 17     String contentEncoding;

 18     String content;

 19     String contentType;

 20     public int code;

 21     String message;

 22     String method;

 23     int connectTimeout;

 24     int readTimeout;

 25     Vector<String> contentCollection;

 26     public static final int CODE_OK = 200;

 27     public String getContent()

 28     {

 29         return content;

 30     }

 31     public String getContentType()

 32     {

 33         return contentType;

 34     }

 35     public int getCode()

 36     {

 37         return code;

 38     }

 39     public String getMessage()

 40     {

 41         return message;

 42     }

 43     public Vector<String> getContentCollection()

 44     {

 45         return contentCollection;

 46     }

 47     public String getContentEncoding()

 48     {

 49         return contentEncoding;

 50     }

 51     public String getMethod()

 52     {

 53         return method;

 54     }

 55     public int getConnectTimeout()

 56     {

 57         return connectTimeout;

 58     }

 59     public int getReadTimeout()

 60     {

 61         return readTimeout;

 62     }

 63     public String getUrlString()

 64     {

 65         return urlString;

 66     }

 67     public int getDefaultPort()

 68     {

 69         return defaultPort;

 70     }

 71     public String getFile()

 72     {

 73         return file;

 74     }

 75     public String getHost()

 76     {

 77         return host;

 78     }

 79     public String getPath()

 80     {

 81         return path;

 82     }

 83     public int getPort()

 84     {

 85         return port;

 86     }

 87     public String getProtocol()

 88     {

 89         return protocol;

 90     }

 91     public String getQuery()

 92     {

 93         return query;

 94     }

 95     public String getRef()

 96     {

 97         return ref;

 98     }

 99     public String getUserInfo()

100     {

101         return userInfo;

102     }

103 }

104  
 1 //     

 2 import java.io.IOException;

 3 public class TestHttp

 4 {

 5     public static void main(String[] args) throws IOException

 6     {

 7         HttpRequester request = new HttpRequester();

 8         HttpRespons hr = request.sendGet("http://www.12306.cn/mormhweb/");

 9         String rsContent = hr.getContent();

10         System.out.println(rsContent);

11     }

12 }