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

所属分类: 网络编程 / JSP编程 阅读数: 543
收藏 0 赞 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; 
  } 
} 

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

更多精彩内容其他人还在看

张孝祥JAVA全集 Ftp下载[100%能下载]

张孝祥JAVA全集 Ftp下载[100%能下载]
收藏 0 赞 0 分享

JSP一句话木马代码

JSP一句话木马代码
收藏 0 赞 0 分享

写一个对搜索引擎友好的文章SEO分页类

写一个对搜索引擎友好的文章SEO分页类
收藏 0 赞 0 分享

卖jsp编程技巧的那个垃圾的所有实例的答案全部已收集,现将他人收集的实例答案公布出来,大家鉴赏!

卖jsp编程技巧的那个垃圾的所有实例的答案全部已收集,现将他人收集的实例答案公布出来,大家鉴赏!
收藏 0 赞 0 分享

ajax+jsp草稿自动保存的实现代码

ajax+jsp草稿自动保存的实现代码
收藏 0 赞 0 分享

一个jsp+AJAX评论系统第1/2页

一个jsp+AJAX评论系统
收藏 0 赞 0 分享

什么是eclipse,eclipse的意思解析

什么是eclipse,eclipse的意思解析
收藏 0 赞 0 分享

经常听朋友说什么J2EE,终于知道点什么是J2EE了,汗一个

经常听朋友说什么J2EE,终于知道点什么是J2EE了,汗一个
收藏 0 赞 0 分享

搭建SSH时的思考和遇到的几个问题的解决方法

搭建SSH时的思考和遇到的几个问题的解决方法
收藏 0 赞 0 分享

RMI使用学习 小结

RMI使用学习 小结
收藏 0 赞 0 分享
查看更多