非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项目,有公司的商业项目,也有个人做着玩的小项目 ...
随机推荐
- document.querySelectorAll遍历
document.querySelectorAll兼容性良好,在之前的项目中就其遍历方式出了错误,先做个小结: 1.for循环 传统遍历方法 for(var i= 0; i< document. ...
- 网站title,meta,description如何设置,长度大小多少合适!
转自:http://www.os1010.com/archives/1682 如 何 把 握 html 网 页 中 的 meta 标 签 对于高级的搜索引擎来说,html 的meta 标签并不是什么新 ...
- Qt编写数据可视化大屏界面电子看板1-布局方案
一.前言 布局方案在整个数据可视化大屏界面电子看板系统中,是除了基础功能以外的核心功能之一,只有具备了布局方案这个功能,才能让用户随意调整自己想要的布局,保存成自定义名称的布局配置文件,这样就大大增加 ...
- mongodb全文搜索
mongodb 的 enterprise 集合存储企业信息: { "_id" : ObjectId("5d62b2a4380d051cfc00565b"), & ...
- WampServer 下载以及安装问题 以及配置远程连接MYSQL
WampServer 3.0 下载: http://dl.pconline.com.cn/download/52877-1.html 碰到的问题DDL无法添加,解决方法:MSVCR110.DLL fo ...
- aws S3存储概念
S3存储(Simple Storage Service) 存储桶:存储桶是S3中用于存储对象的容器.每个对象都存储在一个存储桶中. 对象:对象是S3中存储的基本实体.对象由对象数据和元数据组成.数据部 ...
- Spring-Kafka —— 消费如何达到最高的吞吐量
首先简单的介绍一下消费者对topic的订阅.客户端的消费者订阅了topic后,如果是单个消费者,那么消费者会顺序消费这些topic分区中的数据,如果是创建了消费组有多个消费者,那么kafak的服务端将 ...
- React Native创建项目等待时间长解决
1. 初始化工程 在终端输入命令 :react-native init AwesomeProject 从命令上看,看起来是初始化一个工程,于是, 1分钟...... 10分钟...... 1小时... ...
- java 增强for循环对于空集和null的判断
List<String> list = null; for (String str : list) {//会报空指针异常 System.out.println(str); } List&l ...
- vue cli创建typescript项目
使用最新的Vue CLI @vue/cli创建typescript项目,使用vue -V查看当前的vue cli版本 安装命令 npm install -g @vue-cli 创建项目 vue cre ...