栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA发送HTTP请求,返回HTTP响应内容,应用及实例代码

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA发送HTTP请求,返回HTTP响应内容,应用及实例代码

JDK 中提供了一些对无状态协议请求(HTTP )的支持,下面我就将我所写的一个小例子(组件)进行描述:
首先让我们先构建一个请求类(HttpRequester )。
该类封装了 JAVA 实现简单请求的代码,如下:

复制代码 代码如下:
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.nio.charset.Charset; 
import java.util.Map; 
import java.util.Vector; 

 
public class HttpRequester { 
    private String defaultContentEncoding; 

    public HttpRequester() { 
        this.defaultContentEncoding = Charset.defaultCharset().name(); 
    } 

     
    public HttpRespons sendGet(String urlString) throws IOException { 
        return this.send(urlString, "GET", null, null); 
    } 

     
    public HttpRespons sendGet(String urlString, Map params) 
            throws IOException { 
        return this.send(urlString, "GET", params, null); 
    } 

     
    public HttpRespons sendGet(String urlString, Map params, 
            Map propertys) throws IOException { 
        return this.send(urlString, "GET", params, propertys); 
    } 

     
    public HttpRespons sendPost(String urlString) throws IOException { 
        return this.send(urlString, "POST", null, null); 
    } 

     
    public HttpRespons sendPost(String urlString, Map params) 
            throws IOException { 
        return this.send(urlString, "POST", params, null); 
    } 

     
    public HttpRespons sendPost(String urlString, Map params, 
            Map propertys) throws IOException { 
        return this.send(urlString, "POST", params, propertys); 
    } 

     
    private HttpRespons send(String urlString, String method, 
            Map parameters, Map propertys) 
            throws IOException { 
        HttpURLConnection urlConnection = null; 

        if (method.equalsIgnoreCase("GET") && parameters != null) { 
            StringBuffer param = new StringBuffer(); 
            int i = 0; 
            for (String key : parameters.keySet()) { 
                if (i == 0) 
                    param.append("?"); 
                else 
                    param.append("&"); 
                param.append(key).append("=").append(parameters.get(key)); 
                i++; 
            } 
            urlString += param; 
        } 
        URL url = new URL(urlString); 
        urlConnection = (HttpURLConnection) url.openConnection(); 

        urlConnection.setRequestMethod(method); 
        urlConnection.setDoOutput(true); 
        urlConnection.setDoInput(true); 
        urlConnection.setUseCaches(false); 

        if (propertys != null) 
            for (String key : propertys.keySet()) { 
                urlConnection.addRequestProperty(key, propertys.get(key)); 
            } 

        if (method.equalsIgnoreCase("POST") && parameters != null) { 
            StringBuffer param = new StringBuffer(); 
            for (String key : parameters.keySet()) { 
                param.append("&"); 
                param.append(key).append("=").append(parameters.get(key)); 
            } 
            urlConnection.getOutputStream().write(param.toString().getBytes()); 
            urlConnection.getOutputStream().flush(); 
            urlConnection.getOutputStream().close(); 
        } 

        return this.makeContent(urlString, urlConnection); 
    } 

     
    private HttpRespons makeContent(String urlString, 
            HttpURLConnection urlConnection) throws IOException { 
        HttpRespons httpResponser = new HttpRespons(); 
        try { 
            InputStream in = urlConnection.getInputStream(); 
            BufferedReader bufferedReader = new BufferedReader( 
                    new InputStreamReader(in)); 
            httpResponser.contentCollection = new Vector(); 
            StringBuffer temp = new StringBuffer(); 
            String line = bufferedReader.readLine(); 
            while (line != null) { 
                httpResponser.contentCollection.add(line); 
                temp.append(line).append("rn"); 
                line = bufferedReader.readLine(); 
            } 
            bufferedReader.close(); 

            String ecod = urlConnection.getContentEncoding(); 
            if (ecod == null) 
                ecod = this.defaultContentEncoding; 

            httpResponser.urlString = urlString; 

            httpResponser.defaultPort = urlConnection.getURL().getDefaultPort(); 
            httpResponser.file = urlConnection.getURL().getFile(); 
            httpResponser.host = urlConnection.getURL().getHost(); 
            httpResponser.path = urlConnection.getURL().getPath(); 
            httpResponser.port = urlConnection.getURL().getPort(); 
            httpResponser.protocol = urlConnection.getURL().getProtocol(); 
            httpResponser.query = urlConnection.getURL().getQuery(); 
            httpResponser.ref = urlConnection.getURL().getRef(); 
            httpResponser.userInfo = urlConnection.getURL().getUserInfo(); 

            httpResponser.content = new String(temp.toString().getBytes(), ecod); 
            httpResponser.contentEncoding = ecod; 
            httpResponser.code = urlConnection.getResponseCode(); 
            httpResponser.message = urlConnection.getResponseMessage(); 
            httpResponser.contentType = urlConnection.getContentType(); 
            httpResponser.method = urlConnection.getRequestMethod(); 
            httpResponser.connectTimeout = urlConnection.getConnectTimeout(); 
            httpResponser.readTimeout = urlConnection.getReadTimeout(); 

            return httpResponser; 
        } catch (IOException e) { 
            throw e; 
        } finally { 
            if (urlConnection != null) 
                urlConnection.disconnect(); 
        } 
    } 

     
    public String getDefaultContentEncoding() { 
        return this.defaultContentEncoding; 
    } 

     
    public void setDefaultContentEncoding(String defaultContentEncoding) { 
        this.defaultContentEncoding = defaultContentEncoding; 
    } 

其次我们来看看响应对象(HttpRespons )。 响应对象其实只是一个数据BEAN ,由此来封装请求响应的结果数据,如下:
复制代码 代码如下:
import java.util.Vector; 

 
public class HttpRespons { 

    String urlString; 

    int defaultPort; 

    String file; 

    String host; 

    String path; 

    int port; 

    String protocol; 

    String query; 

    String ref; 

    String userInfo; 

    String contentEncoding; 

    String content; 

    String contentType; 

    int code; 

    String message; 

    String method; 

    int connectTimeout; 

    int readTimeout; 

    Vector contentCollection; 

    public String getContent() { 
        return content; 
    } 

    public String getContentType() { 
        return contentType; 
    } 

    public int getCode() { 
        return code; 
    } 

    public String getMessage() { 
        return message; 
    } 

    public Vector getContentCollection() { 
        return contentCollection; 
    } 

    public String getContentEncoding() { 
        return contentEncoding; 
    } 

    public String getMethod() { 
        return method; 
    } 

    public int getConnectTimeout() { 
        return connectTimeout; 
    } 

    public int getReadTimeout() { 
        return readTimeout; 
    } 

    public String getUrlString() { 
        return urlString; 
    } 

    public int getDefaultPort() { 
        return defaultPort; 
    } 

    public String getFile() { 
        return file; 
    } 

    public String getHost() { 
        return host; 
    } 

    public String getPath() { 
        return path; 
    } 

    public int getPort() { 
        return port; 
    } 

    public String getProtocol() { 
        return protocol; 
    } 

    public String getQuery() { 
        return query; 
    } 

    public String getRef() { 
        return ref; 
    } 

    public String getUserInfo() { 
        return userInfo; 
    } 


最后,让我们写一个应用类,测试以上代码是否正确
复制代码 代码如下:
import com.yao.http.HttpRequester; 
import com.yao.http.HttpRespons; 

public class Test { 
    public static void main(String[] args) { 
        try { 
            HttpRequester request = new HttpRequester(); 
            HttpRespons hr = request.sendGet("https://www.jb51.net"); 

            System.out.println(hr.getUrlString()); 
            System.out.println(hr.getProtocol()); 
            System.out.println(hr.getHost()); 
            System.out.println(hr.getPort()); 
            System.out.println(hr.getContentEncoding()); 
            System.out.println(hr.getMethod()); 

            System.out.println(hr.getContent()); 

        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/152481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号