评论

收藏

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

开发技术 开发技术 发布于:2021-10-20 17:54 | 阅读数:311 | 评论:0

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; 
  } 
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

关注下面的标签,发现更多相似文章