'Cannot get image content from tika api using .net

We are getting content of image from tika api(2.3.0) when we are calling from postman app. But the same call returns something else when we are calling from .net code.

Postman API Call

.net code as follows

using (var httpClient = new HttpClient())
        {
            using (var request = new HttpRequestMessage(new HttpMethod("POST"), "http://192.168.1.118:9998/tika/form"))
            {
                request.Headers.TryAddWithoutValidation("Accept", "*/*");
                var multipartContent = new MultipartFormDataContent();
                multipartContent.Add(new ByteArrayContent(File.ReadAllBytes(filepath)), "upload", Path.GetFileName(filepath));
                request.Content = multipartContent;

                var response = await httpClient.SendAsync(request);
                using (HttpContent content = response.Content)
                {
                    var output= content.ReadAsStringAsync().Result;
                    ...
                }
            }
        }

.net code returns 200 response, the output value comes as following:

<?xml version="1.0" encoding="UTF-8"?><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="X-TIKA:Parsed-By" content="org.apache.tika.parser.EmptyParser"/>
<meta name="Content-Type-Override" content="multipart/form-data;boundary=&quot;457d8034-6ca0-4635-af6c-24176dbdd850&quot;"/>
<meta name="Content-Type" content="multipart/form-data; boundary=457d8034-6ca0-4635-af6c-24176dbdd850"/>
<title>
</title>
</head>
<body/>
</html>

strangely it is parsed by org.apache.tika.parser.EmptyParser, whereas the call from Postman is returning something else from the same tika server.

response from Postman call

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta name="Transparency Alpha" content="none" />
    <meta name="tiff:ImageLength" content="397" />
    <meta name="Compression CompressionTypeName" content="deflate" />
    <meta name="Data BitsPerSample" content="8 8 8" />
    <meta name="Data PlanarConfiguration" content="PixelInterleaved" />
    <meta name="Dimension VerticalPixelSize" content="0.26462027" />
    <meta name="IHDR"
        content="width=765, height=397, bitDepth=8, colorType=RGB, compressionMethod=deflate, filterMethod=adaptive, interlaceMethod=none" />
    <meta name="Chroma ColorSpaceType" content="RGB" />
    <meta name="tiff:BitsPerSample" content="8 8 8" />
    <meta name="Content-Type-Override" content="image/png" />
    <meta name="Content-Type" content="image/png" />
    <meta name="height" content="397" />
    <meta name="gAMA" content="45455" />
    <meta name="pHYs" content="pixelsPerUnitXAxis=3779, pixelsPerUnitYAxis=3779, unitSpecifier=meter" />
    <meta name="Chroma Gamma" content="0.45455" />
    <meta name="Dimension PixelAspectRatio" content="1.0" />
    <meta name="sRGB" content="Perceptual" />
    <meta name="Compression NumProgressiveScans" content="1" />
    <meta name="Content-Type-Parser-Override" content="image/ocr-png" />
    <meta name="X-TIKA:Parsed-By" content="org.apache.tika.parser.DefaultParser" />
    <meta name="X-TIKA:Parsed-By" content="org.apache.tika.parser.image.ImageParser" />
    <meta name="X-TIKA:Parsed-By" content="org.apache.tika.parser.ocr.TesseractOCRParser" />
    <meta name="Dimension HorizontalPixelSize" content="0.26462027" />
    <meta name="Chroma BlackIsZero" content="true" />
    <meta name="Compression Lossless" content="true" />
    <meta name="width" content="765" />
    <meta name="Dimension ImageOrientation" content="Normal" />
    <meta name="tiff:ImageWidth" content="765" />
    <meta name="Chroma NumChannels" content="3" />
    <meta name="Data SampleFormat" content="UnsignedIntegral" />
    <title>
    </title>
</head>

<body>
    <div class="ocr">Hi gfhe dhfnmdfdjfdi
        djfndtn jnfakjfd
        jdhfakjfa
    </div>

</body>

</html>


Solution 1:[1]

        using (var httpClient = new HttpClient())
        {
            using (var request = new HttpRequestMessage(new HttpMethod("POST"), "http://localhost:9998/rmeta/form"))
            {
                var multipartContent = new MultipartFormDataContent();
                multipartContent.Add(new ByteArrayContent(File.ReadAllBytes(filepath)), "upload", Path.GetFileName(filepath));
                request.Content = multipartContent;

                var response = await httpClient.SendAsync(request);
                using (HttpContent content = response.Content)
                {
                    var json = content.ReadAsStringAsync().Result;
                }
            }
        }

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Somnath Maji