您的位置:首页 > 理论基础 > 计算机网络

HttpClient Post 二进制/字节流/byte[]

2017-09-22 16:33 260 查看


HttpClient Post 二进制/字节流/byte[]

2016-06-03 11:28 6790人阅读 评论(0) 收藏 举报


 分类:

Java(11) 


版权声明:本文为博主原创文章,未经博主允许不得转载。

目录(?)[+]

HttpClient 3.x

[java] view
plain copy

public class HttpHelper {  

    String m_url;  

    HttpClient m_HttpClient;  

  

    public HttpHelper(String url) {  

        m_url = url;  

        m_HttpClient = new HttpClient();  

    }  

  

    public byte[] post(byte[] bytes, String contentType) throws IOException {  

        PostMethod method = new PostMethod(m_url);  

  

        if ((contentType != null) && (contentType.length() > 0))  

            method.setRequestHeader("Content-type" , contentType);  

        method.setRequestEntity(new ByteArrayRequestEntity(bytes));  

        int HttpCode = m_HttpClient.executeMethod(method);  

        if (HttpCode != HttpStatus.SC_OK)  

            throw new IOException("Invalid HttpStatus: " + HttpCode);  

        InputStream respStream = method.getResponseBodyAsStream();  

        int respBodySize = respStream.available();  

        if (respBodySize <= 0)  

            throw new IOException("Invalid respBodySize: " + respBodySize);  

        byte[] respBuffer = new byte[respBodySize];  

        if (respStream.read(respBuffer) != respBodySize)  

            throw new IOException("Read respBody Error");  

        return respBuffer;  

    }  

  

    public String postXml(String str) throws IOException {  

        byte[] reqBuffer = str.getBytes(Charset.forName("UTF-8"));  

        byte[] respBuffer = post(reqBuffer, "application/xml; charset=UTF-8");  

        String resp = new String(respBuffer, Charset.forName("UTF-8"));  

        return resp;  

    }  

}  

HttpClient 4.x

[java] view
plain copy

public class HttpHelper {  

    CloseableHttpClient m_HttpClient;  

  

    public HttpHelper() {  

        m_HttpClient = HttpClients.createDefault();  

    }  

  

    // send bytes and recv bytes  

    public byte[] post(String url, byte[] bytes, String contentType) throws IOException {  

        HttpPost httpPost = new HttpPost(url);  

        httpPost.setEntity(new ByteArrayEntity(bytes));  

        if (contentType != null)  

            httpPost.setHeader("Content-type", contentType);  

        CloseableHttpResponse httpResponse = m_HttpClient.execute(httpPost);  

        try {  

            HttpEntity entityResponse = httpResponse.getEntity();  

            int contentLength = (int) entityResponse.getContentLength();  

            if (contentLength <= 0)  

                throw new IOException("No response");  

            byte[] respBuffer = new byte[contentLength];  

            if (entityResponse.getContent().read(respBuffer) != respBuffer.length)  

                throw new IOException("Read response buffer error");  

            return respBuffer;  

        } finally {  

            httpResponse.close();  

        }  

    }  

  

    public byte[] post(String url, byte[] bytes) throws IOException {  

        return post(url, bytes, null);  

    }  

  

    public String postXml(String url, String str) throws IOException {  

        byte[] reqBuffer = str.getBytes(Charset.forName("UTF-8"));  

        byte[] respBuffer = post(url, reqBuffer, "application/xml; charset=UTF-8");  

        String resp = new String(respBuffer, Charset.forName("UTF-8"));  

        return resp;  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: