sdstoehr / har-reader

Library for accessing HTTP Archives (HAR) with Java
MIT License
91 stars 30 forks source link
har har-reader http httparchive java

HAR reader

Read HTTP Archives with Java.

<dependency>
  <groupId>de.sstoehr</groupId>
  <artifactId>har-reader</artifactId>
  <version>2.5.0</version>
</dependency>

Build Status codecov Maven Central

Usage

Reading HAR from File:

HarReader harReader = new HarReader();
Har har = harReader.readFromFile(new File("myhar.har"));
System.out.println(har.getLog().getCreator().getName());

Reading HAR from String:

HarReader harReader = new HarReader();
Har har = harReader.readFromString("{ ... HAR-JSON-Data ... }");

Some HAR generators use date formats, which are not according to the specification. You can tell HAR reader to ignore those fields instead of throwing an exception:

HarReader harReader = new HarReader();   
Har har = harReader.readFromFile(new File("myhar.har"), HarReaderMode.LAX);
Har har = harReader.readFromString("{ ... HAR-JSON-Data ... }", HarReaderMode.LAX);

You can also follow the next section and configure your own mapping configuration to deal with these fields.

Writing HAR to File:

Har har = new Har();
HarWriter harWriter = new HarWriter();
harWriter.writeTo(new File("myhar.har"), har);

Writing HAR to OutputStream:

Har har = new Har();
HarWriter harWriter = new HarWriter();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
harWriter.writeTo(baos, har);

Writing HAR to Writer:

Har har = new Har();
HarWriter harWriter = new HarWriter();
StringWriter sw = new StringWriter();
harWriter.writeTo(sw, har);

Writing HAR as bytes:

Har har = new Har();
HarWriter harWriter = new HarWriter();
byte[] harBytes = harWriter.writeAsBytes(har);

Customizing HAR reader

As of version 2.0.0 you can create your own MapperFactory (DefaultMapperFactory)

public class MyMapperFactory implements MapperFactory {
    public ObjectMapper instance(HarReaderMode mode) {
        ObjectMapper mapper = new ObjectMapper();
        SimpleModule module = new SimpleModule();

        // configure Jackson object mapper as needed

        mapper.registerModule(module);
        return mapper;
    }
}

You can now use your configuration by instantiating the HarReader with your MapperFactory:

HarReader harReader = new HarReader(new MyMapperFactory());

Latest Releases

2.5.0 - 2024-11-20

Details

2.4.1 - 2024-11-15

Details

2.4.0 - 2024-11-13

Details

2.3.0 - 2023-11-17

Details

2.2.1 - 2022-05-26

Details

2.2.0 - 2021-03-27

Details

2.1.10 - 2020-10-05

Details

2.1.9 - 2020-06-30

This is the first release, which is provided both on GitHub and Maven Central repository.

Details

2.1.8 - 2020-05-24

Details

2.1.7 - 2019-11-05

Details

2.1.6 - 2019-10-04

Details

2.1.5 - 2019-09-06

Details

2.1.4 - 2019-05-24

Details

2.1.3 - 2018-10-18

Details

2.1.2 - 2018-08-02

Details

2.1.1 - 2018-07-26

Details

2.1.0 - 2018-03-11

response.getAdditional().get("_transferSize");

Details

2.0.3 - 2017-04-14

2.0.2 - 2016-11-21

2.0.1 - 2016-04-16

Details

2.0.0 - 2015-08-30

Details