非JAVA WEB项目提供Http接口调用实现
package com.monitor.app.utils; import com.alibaba.fastjson.JSON;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer; import java.io.*;
import java.net.InetSocketAddress;
import java.net.URI;
import java.util.Map; public class Test { public static void main(String[] args) throws IOException {
HttpServer httpServer = HttpServer.create(new InetSocketAddress(8001), 0);
httpServer.createContext("/test", new TestHandler());
httpServer.start();
System.out.println("8001端口已成功启动");
} //接口接收处理器
static class TestHandler implements HttpHandler { @Override
public void handle(HttpExchange httpExchange) throws IOException {
//返回
String rtn="调用成功";
httpExchange.sendResponseHeaders(200, 0);
//获取请求路径
URI requestURI = httpExchange.getRequestURI();
System.out.println("请求路径为:"+requestURI);
//获取请求方法
String requestMethod = httpExchange.getRequestMethod();
System.out.println("请求方法为:"+requestMethod);
//获取请求体
InputStream requestBody = httpExchange.getRequestBody();
InputStreamReader inputStreamReader = new InputStreamReader(requestBody);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
StringBuffer stringBuffer = new StringBuffer();
String s = "";
while ((s = bufferedReader.readLine()) != null) {
stringBuffer.append(s.trim());
}
if("GET".equals(requestMethod)){
String[] pathParams = requestURI.toString().split("\\?");
String[] params = requestURI.toString().split("\\?")[1].split("&");
for(String str : params){
String key = str.split("=")[0];
String value = str.split("=")[1];
System.out.println("请求参数名:" + key);
System.out.println("请求参数值:" + value);
}
}
if("POST".equals(requestMethod)){
//此处引入谷歌Gson框架将String转为Map方便获取参数
// Gson gson = new Gson();
// Map map = gson.fromJson(stringBuffer.toString(), new TypeToken<Map<String, Object>>(){}.getType());
Map map = JSON.parseObject(stringBuffer.toString());
String requestParam = map.get("imgPath").toString();
for (Object obj : map.keySet()){
System.out.println("key为:" + obj);
System.out.println("value为:" + map.get(obj));
}
}
OutputStream responseBody = httpExchange.getResponseBody();
responseBody.write(rtn.getBytes());
responseBody.close();
}
}
}
postman模拟调用:
响应结果为:
postman相应调用成功状态码200

注:如果前面用了gson谷歌去解析json,需添加Maven依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
原文链接:https://blog.csdn.net/weixin_42424359/article/details/94928352
非JAVA WEB项目提供Http接口调用实现的更多相关文章
- java web项目war包部署,使用tomcat对指定接口设置身份认证
先简单说一下需求: 将一个基于springboot2.0开发的java web项目打成war包,通过tomcat部署到一台linux服务器上,项目相关的一些图片等资源也按照一定规则放置在服务器构建好的 ...
- Java web项目综合练习(Estore)
Java web项目综合练习(Estore) 复习day18: ajax代码的书写步骤 2)json格式文本,转js对象的方法是那个 项目开发流程介绍 这里学习的JavaWEB项目实战,主要是把前面学 ...
- java web项目答辩答辩题总结(书本网上语言答辩+自己的语言答辩)
答辩每个人的总分为1.5分.每个人主要问3个问题. 开发流程===>系统架构====>项目模块+功能===>项目得失重定向与转发:?九个隐式对象?get与post的区辨:?jsp有静 ...
- Intellij IDEA Java web 项目搭建
Java web 项目搭建 简介 在上一节java web环境搭建中,我们配置了开发java web项目最基本的环境,现在我们将采用Spring MVC+Spring+Hibernate的架构搭建一个 ...
- Intellij IDEA采用Maven+Spring MVC+Hibernate的架构搭建一个java web项目
原文:Java web 项目搭建 Java web 项目搭建 简介 在上一节java web环境搭建中,我们配置了开发java web项目最基本的环境,现在我们将采用Spring MVC+Spring ...
- Java web 项目搭建
Java web 项目搭建 简介 在上一节java web环境搭建中,我们配置了开发java web项目最基本的环境,现在我们将采用Spring MVC+Spring+Hibernate的架构搭建一个 ...
- 使用MyEclipse搭建java Web项目开发
转自:http://blog.csdn.net/jiuqiyuliang/article/details/36875217 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成 ...
- 一个完整Java Web项目背后的密码
前言 最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小项目,写篇文章记录总结一下收获,列举出在做项目的整个过程中,所需要用到的技能和知识点,带给还没有真正接触过完整Java ...
- 做一个完整的Java Web项目需要掌握的技能[转]
转自:http://blog.csdn.net/JasonLiuLJX/article/details/51494048 最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小项目 ...
随机推荐
- druid 参数配置详解
druid 参数配置详解 */--> druid 参数配置详解 Table of Contents 1. 初始化连接 2. 参数配置及说明 3. 注意事项 3.1. 底层连接 3.2. 空闲检查 ...
- display:flex 布局详解(2)
1. flex设置元素垂直居中对齐 在之前的一篇文章中记载过如何垂直居中对齐,方法有很多,但是在学习了flex布局之后,垂直居中更加容易实现 HTML代码: <div class=" ...
- 8and9 pod控制器
Pod控制器: 自主定义的pod资源删除后不会被重启,被Pod控制器管理的pod资源被删除后会重启. pod控制器的种类: ReplicationController: (最早使用,现在已经被废弃,太 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-10.Springboot2.x用户登录拦截器开发实战
笔记 10.Springboot2.x用户登录拦截器开发实战 简介:实战开发用户登录拦截器拦截器 LoginInterceptor 1.实现接口 LoginI ...
- LNK2019 无法解析的外部符号 该符号在函数 _main 中被引用
学习严蔚敏的数据结构,使用vc6新建项目,文件名分别如下: SequenceStack.cpp SequenceStack.h Status.h TestCase.c 报错如下: xilink6: e ...
- 攻防世界新手Misc writeup
ext3 在Linux,使用root账户挂载linux文件,打开后使用find *|grep flag查找到一个flag.txt,打开后是base64编码,解码获得flag. give_you_fla ...
- jQuery代码书写规范
1. 对于同一个对象不超过三个操作的,可以直接写成一行 $("li").show().unbind("click"); 2. 对于同一个对象的较多操作,建议每行 ...
- freeRTOS学习8-20
- 菜鸟系列docker——搭建私有仓库harbor(6)
docker 搭建私有仓库harbor 1. 准备条件 安装docker sudo yum update sudo yum install -y yum-utils device-mapper-per ...
- E.Magic Master(The 2019 Asia Nanchang First Round Online Programming Contest)
直接模拟orhttps://blog.csdn.net/liufengwei1/article/details/100643831