ReevesJ 2021-06-04 16:47 采纳率: 33.3%
浏览 35
已结题

python如何像java那样携带byte[]类型的数据发送post请求?

同题目, java发送post请求的时候可以直接携带byte[]类型的数据

想请教大佬们 python中如何实现?感谢!

  • 写回答

1条回答 默认 最新

  • 小P聊技术 2021-06-05 09:53
    关注
    public  byte[] post(String url,byte[] bytes) throws Exception {
            HttpPost httpPost = new HttpPost(url);
            httpPost.setEntity(new ByteArrayEntity(bytes));
            httpPost.setHeader("Content-type", "application/octet-stream;charset=UTF-8");
            //这里是设置虚拟IP
            String remoteIp = (int) (Math.random() * 255 + 1)+"."+(int) (Math.random() * 255 + 1)+"."+(int) (Math.random() * 255 + 1)+"."+(int) (Math.random() * 255 + 1);
            httpPost.setHeader("X-Forwarded-For",remoteIp);
            CloseableHttpResponse httpResponse = HttpClients.createDefault().execute(httpPost);
            try {
                HttpEntity entityResponse = httpResponse.getEntity();
                int responseCode = httpResponse.getStatusLine().getStatusCode();
                int contentLength = (int) entityResponse.getContentLength();
    //            OutputStream out  = new ByteArrayOutputStream(contentLength);
                if (contentLength <= 0)
                    throw new IOException("No response");
                int total = 0;
                int len ;
                //respBuffer是一个缓存数组,缓存InputStream.read()的数据,由于可能一次取不全,所以分多次取,最后是-1时候不取了结束了
                byte[] respBuffer = new byte[contentLength];
                byte[] respBuffer1 = new byte[contentLength];
                while ((len = entityResponse.getContent().read(respBuffer)) != -1 ){
                    for (int i=0;i<len;i++){
                        respBuffer1[total+i] = respBuffer[i];
                    }
                    total = total + len;
                }
    //            System.out.println(entityResponse.getContent().read(respBuffer,0,contentLength));
    
                if (total != respBuffer.length)
                    throw new IOException("Read response buffer error");
                return respBuffer1;
            } finally {
                httpResponse.close();
            }
        }
     
    评论

报告相同问题?

悬赏问题

  • ¥15 在获取boss直聘的聊天的时候只能获取到前40条聊天数据
  • ¥20 关于URL获取的参数,无法执行二选一查询
  • ¥15 液位控制,当液位超过高限时常开触点59闭合,直到液位低于低限时,断开
  • ¥15 marlin编译错误,如何解决?
  • ¥15 有偿四位数,节约算法和扫描算法
  • ¥15 VUE项目怎么运行,系统打不开
  • ¥50 pointpillars等目标检测算法怎么融合注意力机制
  • ¥20 Vs code Mac系统 PHP Debug调试环境配置
  • ¥60 大一项目课,微信小程序
  • ¥15 求视频摘要youtube和ovp数据集