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

来源:互联网 发布:七天网络查分登录app 编辑:程序博客网 时间:2024/05/22 01:13

HttpClient 3.x

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

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;    }}


1 0
原创粉丝点击