java post byte数组_HttpClient Post 二进制/字节流/byte[]实例代码

这篇博客展示了如何在Java中使用HttpClient 3.x和4.x版本进行POST请求,发送和接收字节流。提供了具体的实例代码,包括设置Content-type和处理响应流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HttpClient Post 二进制/字节流/byte[]实例代码

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;

}

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值