首页 > 编程语言 >Java 用jetty实现HTTP服务器 获取 Get 请求体

Java 用jetty实现HTTP服务器 获取 Get 请求体

时间:2024-08-06 14:16:23浏览次数:9  
标签:HTTP Get jetty server new import JettyServer com

Java 用 jetty 开发 HTTP服务器 来 获取每次 GET请求中 的请求体

监听 本机IP地址  中的  /httpCli 

端口 5011

Main.java

package com.JettyServer;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

/***/
public class App 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello Jetty Server !" );
com.JettyServer.App appMain = new com.JettyServer.App(); ContextHandlerCollection contexts = new ContextHandlerCollection();//region jetty-------- httpCli调试用-------------------- ServletContextHandler context1 = new ServletContextHandler(ServletContextHandler.SESSIONS); context1.setContextPath("/"); com.JettyServer.HttpServletCli httpServletCli = new com.JettyServer.HttpServletCli(appMain);//httpapi context1.addServlet(new ServletHolder(httpServletCli), "/httpCli");//httpapi contexts.addHandler(context1); //region jetty服务器启动------------------------------- Server server = new Server(5011);//设置端口 server.setHandler(contexts); try { server.start();//jetty服务器启动 System.out.println( "Jetty Server 启动成功。port : 5011 " ); server.join(); } catch (Exception e) { e.printStackTrace(); //logger.error(e.getMessage()); } //endregion ------------------------------------------------- }
HttpServletCli.java
package com.JettyServer;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class HttpServletCli extends HttpServlet {

    private com.JettyServer.App _appMain;

    public HttpServletCli(com.JettyServer.App app ) {
        this._appMain=app;
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {

        System.out.println("get response: " +response.toString());
        System.out.println("get request: " +request.toString());

        StringBuilder buffer = new StringBuilder();
        String line;

        // 获取请求体的输入流
        BufferedReader reader = request.getReader();

        // 逐行读取数据
        while ((line = reader.readLine()) != null) {
            buffer.append(line);
        }

        // 将读取的---请求体---数据转换为字符串
        String data = buffer.toString();
        System.out.println("get request 请求体: " +data);

    }

    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException {
        System.out.println("doPost "+ req.toString());
        BufferedReader streamReader = new BufferedReader( new InputStreamReader(req.getInputStream(), "UTF-8"));
        StringBuilder responseStrBuilder = new StringBuilder();
        String inputStr;
        while ((inputStr = streamReader.readLine()) != null)
            responseStrBuilder.append(inputStr);
        System.out.println("doPost "+responseStrBuilder.toString());
        //允许跨域
        res.setHeader("Access-Control-Allow-Origin", "*");
        res.setHeader("Access-Control-Allow-Methods", "*");
        res.setHeader("Access-Control-Max-Age", "3600");
        res.addHeader("Access-Control-Allow-Headers", "*");
        res.setHeader("Access-Control-Allow-Credentials", "*");
  
    }


}

pom.xml

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      <version>9.4.4.v20170414</version>
      <type>jar</type>
    </dependency>
  </dependencies>

 

标签:HTTP,Get,jetty,server,new,import,JettyServer,com
From: https://www.cnblogs.com/hailexuexi/p/18345045

相关文章

  • HTTPS 比 HTTP 更安全吗?这两种协议有什么区别?
    在互联网的通讯过程中,HTTP(超文本传输协议)和HTTPS(安全HTTP)是两种最基本、最重要的通讯协议,它们在网络中都扮演着重要的角色。然而近年来,随着网络安全问题的日益突出,HTTPS的安全性也受到越来越多人的重视。本文将探讨HTTPS是否比HTTP更安全以及两者的区别。首先我们来了解一下......
  • HTTPS 比 HTTP 更安全吗?这两种协议有什么区别?
    在互联网的通讯过程中,HTTP(超文本传输协议)和HTTPS(安全HTTP)是两种最基本、最重要的通讯协议,它们在网络中都扮演着重要的角色。然而近年来,随着网络安全问题的日益突出,HTTPS的安全性也受到越来越多人的重视。本文将探讨HTTPS是否比HTTP更安全以及两者的区别。首先我们来了解一下......
  • HTTPS 比 HTTP 更安全吗?这两种协议有什么区别?
    在互联网的通讯过程中,HTTP(超文本传输协议)和HTTPS(安全HTTP)是两种最基本、最重要的通讯协议,它们在网络中都扮演着重要的角色。然而近年来,随着网络安全问题的日益突出,HTTPS的安全性也受到越来越多人的重视。本文将探讨HTTPS是否比HTTP更安全以及两者的区别。首先我们来了解一下......
  • okhttp基础使用(二)
    新建类自定义拦截器packagecom.example.okhttp;importandroid.util.Log;importjava.io.IOException;importokhttp3.Interceptor;importokhttp3.Request;importokhttp3.Response;publicclassLogInterceptimplementsInterceptor{@OverridepublicRe......
  • 获取第三方GET接口的data数据,服务器需要设置正确的 Access-Control-Allow-Origin
    在现代Web开发中,由于同源策略的限制,浏览器通常不允许从一个域名(origin)直接访问另一个域名的资源,除非服务器端设置了适当的CORS(跨源资源共享)策略。项目中如何直接获取get接口https://api.cp.139.com/cgate/cme/v1/appUpgrade/version?channel=baidu02下的接口相应对象:{"code":......
  • 出现 No mapping for DELETE/GET等
    出现NomappingforDELETE/GET等错误一:请求url不对修改前如下图可知后端请求url为http://localhost:8080/user/addressBook运行后控制台出现发现后端请求url比前端请求url少了/改正:在@DeleteMapping后面加上/ @DeleteMapping("/")@ApiOperation("根据id......
  • C# 使用Flurl http请求处理流式响应
    AI对话接口采用流式返回,使用Flurl处理返回的数据流usingFlurl;usingFlurl.Http;[HttpPost]publicasyncTask<string>GetLiushiChatLaw(){//1、请求参数,根据实际情况YourModelrequest=newYourModel();stringallStr="";stringchatLawApiUrl="ht......
  • okhttp基础使用(一)
    新建一个安卓项目build.gradle(:app)中添加如下依赖android{android.buildFeatures.viewBinding=true}dependencies{implementation'com.squareup.okhttp3:okhttp:3.14.+'}activity_main.xml编写按钮和文本<?xmlversion="1.0"encoding=&quo......
  • [C++] 简单解析http请求
    #include<iostream>#include<string>#include<map>#include<vector>#include<regex>classHttpRequest{public:enumMethod{GET,POST,UNKNOWN};enumError{SUCCESS,......
  • 方天云智慧平台系统 GetSalQuatation SQL注入漏洞复现
    0x01产品简介方天云智慧平台系统,作为方天科技公司的重要产品,是一款面向企业全流程的业务管理功能平台,集成了ERP(企业资源规划)、MES(车间执行系统)、APS(先进规划与排程)、PLM(产品生命周期)、CRM(客户关系管理)等多种功能模块,旨在通过云端服务为企业提供数字化、智能化的管理解决方案......