Code Monkey home page Code Monkey logo

networkutils's Introduction

NetworkUtils

用简单的方式获取网页上的内容

目前完成的功能有

  • 远程调用 Aria2 下载 (JSONRPC)
  • 基本的发送请求
  • 原始 HTTP 格式的文件读取 (暂时失效,下个版本补上) 2020年5月5日00:14:34 已经更新!
  • 网络请求缓存
  • 发生错误自动重试
  • 网络代理
  • 多部件上传

简单收发请求示例:

public class HttpRequestTest{
    @Test
    public void httpRequestTest() throws MalformedURLException {
        // 获取 HttpNetworkUtils 对象
        HttpNetworkUtils httpNetworkUtils = HttpNetworkUtilsFactory.getHttpNetworkUtils();
    
        // 创建请求参数对象
        NetworkRequestData requestData = new NetworkRequestData(
                new URL(TEST_URL),RequestMethod.GET
        );
    
        Map<String,String> queryMap = new HashMap<>();
        queryMap.put("k6","v6");
        queryMap.put("k1","v11");
        
        // 设置请求头和 URL Query 参数
        requestData.setUserAgent(UA);
        requestData.setCookie(COOKIE_STRING);
        requestData.setQueryData(URL_QUERY);
        requestData.addHeader("Content-Type","application/json;charset=UTF-8");
        requestData.setQueryData(queryMap);

        // 设置 HttpNetworkUtils 出现错误代码时信任的 HTTP 请求码
        requestData.setTrustStatusCode(200,300,400,500,600,700,800,900,1000);
        
        // 设置请求体                   
        requestData.setRequestBodyData("k1=123456789&k2=123456789".getBytes());

        // 发送请求
        NetworkResponseData responseData = httpNetworkUtils.readPage(requestData);
    
        // 获取响应数据
        logger.info("Cookie: " + responseData.getCookieStr());
        logger.info("CookieList: " + responseData.getCookieList());
        logger.info("Header: " + responseData.getHeaderMap());
        logger.info("RespBodyLength: " + responseData.getRequestBodyData().length);
    }
}

多部件上传示例:

public class TestUploadFile{
        @Test
        public void formUploader() throws MalformedURLException {
            // 读取文件 获取 Byte 数据
            byte[] data = new byte[1024];
    
            FormUploadNetworkRequestData requestData = new FormUploadNetworkRequestData(
                    new URL("http://127.0.0.1:8080/Images?key=" + "07e8ea7de8734ba089d4ee152f806761")
            );
    
            // 设置文字表单数据
            requestData.addTextFrom("fileName","WicksImages.png");
            requestData.addTextFrom("username","WicksChen");

            // 设置文件上传数据
            requestData.addUploaderForm("images/jpeg","WicksImages.jpg","file",outputStream.toByteArray());

            // 设置信任请求码
            requestData.setTrustStatusCode(404,400);
    
            // 设置请求头            
            requestData.addHeader("token","405Jkg/npueknD6r5WKA7OlMNCYdJIT4UnXUYaa8AGfUOzzDa8Vxx43zWOwJGE3ccBLwjNh+16F0HYQSYxoW8C1cBTUwoPXkoxCP7hCh2rE=");
       
            HttpNetworkUtils httpNetworkUtils = HttpNetworkUtilsFactory.getHttpNetworkUtils();
            NetworkResponseData responseData = httpNetworkUtils.readPage(requestData);
    
            logger.info("Cookie: " + responseData.getCookieStr());
            logger.info("CookieList: " + responseData.getCookieList());
            logger.info("Header: " + responseData.getHeaderMap());
            logger.info("RespBodyLength: " + responseData.getRequestBodyData().length);
            logger.info("RespBody: " + new String(responseData.getRequestBodyData()));
        }
}

使用方式

  1. 直接使用 Releases 中提供的 Jar 包 (可能会更新较慢)
  2. 通过 git clone 的方式克隆到本地后自行用 Maven 安装到本地仓库使用

测试冲突情况 本地

networkutils's People

Contributors

dependabot[bot] avatar wickscc avatar

Stargazers

 avatar  avatar  avatar  avatar

networkutils's Issues

提议

希望早日上传maven,下载文件有点麻烦👍🏻

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.