HttpClient Post 二进制/字节流/byte[]实例代码HttpClient 3.xpublic class HttpHelper { String m_url; HttpClient m_HttpClient;...
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;
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
沃梦达教程
本文标题为:HttpClient Post 二进制/字节流/byte[]实例代码
基础教程推荐
猜你喜欢
- Java实现线程插队的示例代码 2022-09-03
- java实现多人聊天系统 2023-05-19
- springboot自定义starter方法及注解实例 2023-03-31
- java基础知识之FileInputStream流的使用 2023-08-11
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- Java并发编程进阶之线程控制篇 2023-03-07
- Java文件管理操作的知识点整理 2023-05-19
- Java数据结构之对象比较详解 2023-03-07
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java实现查找文件和替换文件内容 2023-04-06