一个简单的java网络通信例子
2024-10-21 11:59:42
先建立2个项目,分别是请求端和响应端,端口改成不一样的就行,比如请求端是8080,响应端是8081
废话不多说,直接上代码
请求端的Controller层
@GetMapping("/request")
public String hi() {
HttpClient httpClient = HttpClients.createDefault();
String url="http://127.0.0.1:8081/response";
String result=null;
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Content-type", "application/json;charset=utf-8");
httpPost.setHeader("Accept", "application/json");
JSONObject jsonObject = new JSONObject();
jsonObject.put("request", "hi, i am request!");
httpPost.setEntity(new StringEntity(jsonObject.toJSONString(), "UTF-8")); try {
HttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
result = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
} else {
result = String.valueOf(response.getStatusLine().getStatusCode());
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
响应端的Controller层
@PostMapping("/response")
public String response(HttpServletRequest request) throws IOException {
request.setCharacterEncoding("UTF-8");
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
String temp= null;
StringBuilder result = new StringBuilder();
try {
while ((temp = reader.readLine()) != null) {
result.append(temp);
}
} catch (IOException e) {
e.printStackTrace();
}
reader.close();
@SuppressWarnings("unchecked")
Map<String,String> map = (Map<String,String>)JSON.parse(result.toString());
return "Hi, request,I am response, this message is from you: "+map.get("request");
}
在浏览器输入 localhost:8080/request,然后请求端请求http通信去访问响应端,响应端得到消息后,返回结果,然后请求端得到结果后显示出来
结果:Hi, request,I am response, this message is from you: hi, i am request!
完~
最新文章
- date命令总结
- OpenGL ES无法获取贴图数据原因
- 深入理解JS异步编程(一)
- std::map 自定义排序
- 【练习】如何显示本地主机上的MySQL客户机版本
- MySQL 使用方法简单教程
- C++:文件的输入和输出
- Asp.Net MVC Filter权限过滤使用说明
- C#中串口与Modem的通信
- 用nrm一键切换npm源
- 邓_phpcms_二次开发_创建插件
- JavaEEspring整理
- [WC2018]通道
- intptr_t 指针(转)
- k8s-YAML配置文件(转)
- regular.js
- sublime text3:sublime text3本地服务器方式运行文件
- Windows Service 之 Bug 记录
- 线性表之顺序表C++实现
- 三年半Java后端面试经历