java中什么是报文(用的java,通信协议中上下行报文是什么意思)
大家好,关于java中什么是报文很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于用的java,通信协议中上下行报文是什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!
如何实现java解析网络协议报文
普通参数:
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
文件参数:
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
参数实体的最后一行是:--加上boundary加上--,最后换行,这里的格式即为:--OCqxMF6-JxtxoMDHmoG5W5eY9MGRsTBp--。
模拟文件上传请求
public static void uploadFile(String fileName){
try{
//换行符
final String newLine="\r\n";
final String boundaryPrefix="--";
//定义数据分隔线
String BOUNDARY="========7d4a6d158c9";
//服务器的域名
URL url= new URL("www.myhost.com");
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
//设置为POST情
conn.setRequestMethod("POST");
//发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setUseCaches(false);
//设置请求头参数
conn.setRequestProperty("connection","Keep-Alive");
conn.setRequestProperty("Charsert","UTF-8");
conn.setRequestProperty("Content-Type","multipart/form-data; boundary="+ BOUNDARY);
OutputStream out= new DataOutputStream(conn.getOutputStream());
//上传文件
File file= new File(fileName);
StringBuilder sb= new StringBuilder();
sb.append(boundaryPrefix);
sb.append(BOUNDARY);
sb.append(newLine);
//文件参数,photo参数名可以随意修改
sb.append("Content-Disposition: form-data;name=\"photo\";filename=\""+ fileName
+"\""+ newLine);
sb.append("Content-Type:application/octet-stream");
//参数头设置完以后需要两个换行,然后才是参数内容
sb.append(newLine);
sb.append(newLine);
//将参数头的数据写入到输出流中
out.write(sb.toString().getBytes());
//数据输入流,用于读取文件数据
DataInputStream in= new DataInputStream(new FileInputStream(
file));
byte[] bufferOut= new byte[1024];
int bytes= 0;
//每次读1KB数据,并且将文件数据写入到输出流中
while((bytes= in.read(bufferOut))!=-1){
out.write(bufferOut, 0, bytes);
}
//最后添加换行
out.write(newLine.getBytes());
in.close();
//定义最后数据分隔线,即--加上BOUNDARY再加上--。
byte[] end_data=(newLine+ boundaryPrefix+ BOUNDARY+ boundaryPrefix+ newLine)
.getBytes();
//写上结尾标识
out.write(end_data);
out.flush();
out.close();
//定义BufferedReader输入流来读取URL的响应
// BufferedReader reader= new BufferedReader(new InputStreamReader(
// conn.getInputStream()));
// String line= null;
// while((line= reader.readLine())!= null){
// System.out.println(line);
//}
} catch(Exception e){
System.out.println("发送POST请求出现异常!"+ e);
e.printStackTrace();
}
}
用的java,通信协议中上下行报文是什么意思
你可以了解一下http协议
报文就是一组客户端和服务端都认可的信息数据。可以是xml形式,json格式。等等
比如有一个android客户端向服务端发送登陆报文
<user>
<username>baidu</username>
<password>123456</password>
</user>
这段由客户端到服务端的xml,就可以视为一个上行报文
服务端收到报文后会返回登陆成功或者失败的信息
比如:200(成功)
404(失败)
甚至返回更详细的失败信息等等这个由服务端到客户端的返回信息同样可以是多样性,可视为下行报文
javaweb里get请求头报文信息含义是什么啊
常见的HTTP报文头属性
Accpet
告诉服务端,客户端接收什么类型的响应
Referer
表示这是请求是从哪个URL进来的,比如想在网上购物,但是不知道选择哪家电商平台,你就去问度娘,说哪家电商的东西便宜啊,然后一堆东西弹出在你面前,第一给就是某宝,当你从这里进入某宝的时候,这个请求报文的Referer就是www.baidu.com
Cache-Control
对缓存进行控制,如一个请求希望响应的内容在客户端缓存一年,或不被缓可以通过这个报文头设置
Accept-Encoding
例如:Accept-Encoding:gzip, deflate(这两种都是压缩格式)
这个属性是用来告诉服务器能接受什么编码格式,包括字符编码,压缩形式(一般都是压缩形式)
Host
指定要请求的资源所在的主机和端口
User-Agent作用:告诉服务器,客户端使用的操作系统、浏览器版本和名称
java中报文啥时候用呢一直搞不懂
你可以了解一下http协议
报文就是一组客户端和服务端都认可的信息数据。可以是xml形式,json格式。等等
比如有一个android客户端向服务端发送登陆报文
<user>
<username>baidu</username>
<password>123456</password>
</user>
这段由客户端到服务端的xml,就可以视为一个上行报文
服务端收到报文后会返回登陆成功或者失败的信息
比如:200(成功)
404(失败)
甚至返回更详细的失败信息等等这个由服务端到客户端的返回信息同样可以是多样性,可视为下行报文
java中什么是报文和用的java,通信协议中上下行报文是什么意思的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!