java urlconnection 写二进制数据_Java URLConnection 发送 二进制 文件进行 post 请求

本文介绍如何在Java中使用URLConnection发送二进制文件,如图片,进行POST请求。通过设置连接为输出模式,进行Base64编码认证,读取文件并写入输出流,实现向服务器发送二进制数据。
摘要由CSDN通过智能技术生成

在有些场景中,我们需要发送一个二进制文件进行请求,比如发送一张图片进行检测,在Postman中可以直接模拟请求,那么在Java中,如何实现呢,话不多说,直接上代码:

public static String checkModelStatus(String urlString)

throws IOException {

String TEST_IMAGE_PATH = "/imagepath/test.jpg";

URL url = new URL(urlString);

URLConnection connection = url.openConnection();

connection.setDoOutput(true);

String authStr = "user"+":"+"passwowrd;

System.out.println("Original String is " + authStr);

// encode data on your side using BASE64

byte[] bytesEncoded = Base64.encodeBase64(authStr .getBytes());

String authEncoded = new String(bytesEncoded);

connection.setRequestProperty("Authorization", "Basic "+authEncoded);

//try里面拿到输出流,输出端就是服务器端

try (BufferedOutputStream bos = new BufferedOutputStream(connection.getOutputStream())) {

//我java代码是在Windows上运行的,图片路径就是下面这个

InputStream is = new FileInputStream(TEST_IMAGE_PATH);

BufferedInputStream bis = new BufferedInputStream(is);

byte[] buf= new byte[1024];

int length = 0;

length = bis.read(buf);

while(length!=-1) {

bos.write(buf, 0, length);

length = bis.read(buf);

}

bis.close();

is.close();

bos.close();

}

//下面是服务器端如果有返回数据的话,做接收用的

StringBuilder response = new StringBuilder();

try (Scanner in = new Scanner(connection.getInputStream())) {

while (in.hasNextLine()) {

response.append(in.nextLine());

// response.append("\n");

}

} catch (IOException e) {

if (!(connection instanceof HttpURLConnection))

throw e;

InputStream err = ((HttpURLConnection) connection).getErrorStream();

if (err == null)

throw e;

Scanner in = new Scanner(err);

response.append(in.nextLine());

// response.append("\n");

in.close();

}

return response.toString();

}

使用上面的代码就可以发送一个二进制的数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值