HTTP client (OpenEdge.Net.pl) response body issues on Linux

Posted by ihuzjak on 11-May-2018 03:20

Hi guys, I have an issue when using HTTP client(OpenEdge.Net.pl) on Linux (CentOS 7). OpenEdge version is 11.7.3.
Every response I get is HTTP/1.0 version (even when forcing HTTP/1.1 in request), but also ContentLength is always 0 and there is no response body (Entity object)!
Using log-manager I discovered that full response, containing both header and body, comes back to the server, but in OpenEdge I get only header.

When trying same thing on Windows 10, everything works fine, I get response body.

I would appreciate your help.

Regards,
Ivan

Posted by ihuzjak on 06-Aug-2018 10:32

The issue was finally solved in a way that new version of API to which OE HTTP client makes request, returns responses exclusively in HTTP version 1.1, which enables OpenEdge to read all of the response (body too) correctly.

Posted by ihuzjak on 06-Aug-2018 10:33

The issue was finally solved in a way that new version of API to which OE HTTP client makes request, returns responses exclusively in HTTP version 1.1, which enables OpenEdge to read all of the response (body too) correctly.

Posted by ihuzjak on 06-Aug-2018 10:35

The issue was finally solved in a way that new version of API to which OE HTTP client makes request, returns responses exclusively in HTTP version 1.1, which enables OpenEdge to read all of the response (body too) correctly.

Posted by ihuzjak on 06-Aug-2018 10:36

The issue was finally solved in a way that new version of API to which OE HTTP client makes request, returns responses exclusively in HTTP version 1.1, which enables OpenEdge to read all of the response (body too) correctly.

All Replies

Posted by Peter Judge on 11-May-2018 10:00

Are there any errors in any logs?
 
It sounds odd … may be worth speaking to tech support
 

Posted by ihuzjak on 14-May-2018 14:01

Dear Peter, thank you for your answer. No, didn't get any log errors, my log-manager log file looks like this:

[OE.N.HTTP.L.ABLS.ABLSocketLibrary INFO] REQUEST: TIMEOUT(s)=0

[OE.N.HTTP.L.ABLS.ABLSocketLibrary DEBUG] REQUEST: FILE= /srv/medical/db/request-raw.txt

[OE.N.HTTP.L.ABLS.ABLSocketLibrary DEBUG] RESPONSE: FILE= /srv/medical/db/response-data-received.txt

[OE.N.SC.ClientSocket DEBUG] Connect: -H hr-nbs-ite-domname.northeurope.cloudapp.azure.com -S 80

[OE.N.SC.ClientSocket DEBUG] Connect: TIME(ms)=46

[OE.N.SC.ClientSocket DEBUG] Write: time(ms)=0

[OE.N.SC.ClientSocket DEBUG] Write: size(b)=1211

[OE.N.SC.ClientSocket DEBUG] WaitSync: timeout(s)=0

[OE.N.SC.ClientSocket DEBUG] ReadHandler: OK? yes

[OE.N.SC.ClientSocket DEBUG] ReadHandler: time(ms)=133

[OE.N.SC.ClientSocket DEBUG] ReadHandler: size(b)=488

[OE.N.HTTP.L.ABLS.ABLSocketLibrary DEBUG] CHUNK: NUM= 1

[OE.N.HTTP.L.ABLS.ABLSocketLibrary DEBUG] CHUNK: SIZE(b)= 8192

[OE.N.HTTP.L.ABLS.ABLSocketLibrary DEBUG] CHUNK: READ(b)= 488

[OE.N.HTTP.L.ABLS.ABLSocketLibrary TRACE] CHUNK: FILE= /srv/medical/db/response-data-chunk-00001.txt

[OE.N.SC.ClientSocket DEBUG] ReadHandler:OnDataReceived time(ms)=40

[OE.N.SC.ClientSocket DEBUG] ReadHandler: ReadComplete? yes

[OE.N.SC.ClientSocket DEBUG] ReadHandler: ReadTimeout? no

[OE.N.SC.ClientSocket DEBUG] ReadHandler: ReadTerminated? no

[OE.N.SC.ClientSocket DEBUG] WaitSync: total time(ms)=,178

[OE.N.SC.ClientSocket DEBUG] WaitSync: total size(b)=488

[OE.N.SC.ClientSocket DEBUG] Disconnect: -H hr-nbs-ite-domname.northeurope.cloudapp.azure.com -S 80

My response-data-received.txt file looks like this (on Windows I get HTTP/1.1 and Transfer-Encoding: chunked, which I can not force on Linux..):

HTTP/1.0 200 OK

Cache-Control: private, max-age=0, no-cache, no-store, no-transform, must-revalidate

Pragma: no-cache

Content-Type: application/json; charset=utf-8

Content-Language: en

Expires: Thu, 01 Jan 1970 00:00:00 GMT

Server: Kestrel

Date: Mon, 14 May 2018 17:30:00 GMT

X-Cache: MISS from firewall

X-Cache-Lookup: MISS from firewall:3128

Via: 1.0 firewall (squid/3.1.20)

Connection: close

{"operationCode":11110100,"information":"The pack is active.","state":"Active"}

Bellow is my simple code. In file /tmp/data.json I only get empty brackets {}, and oResponse:ContentLength is 0.

When I tried access JSON values, I got Progress error:

Call to Progress.Json.ObjectModel.JsonObject:GetCharacter( ) failed. Property 'state' was not found. (16058)

oRequest = RequestBuilder:get(httpUrl)

               :AcceptJson()

               :AddHeader("Authorization", access_token)

               :AddHeader("emvs-data-entry-mode", "manual")

               :AddHeader("Accept-Language", "en")

               :WithTransferEncoding(OpenEdge.Net.HTTP.TransferEncodingEnum:Chunked)

               :HttpVersion("HTTP/1.1")

               :request.

oResponse = ClientBuilder:Build():Client:Execute(oRequest).

if oResponse:StatusCode <> 200 then

   message 'ERROR: Data retrieving..' ' HTTP Status Code:' oResponse:StatusCode oResponse:StatusReason view-as alert-box.

if oResponse:ContentType = 'application/json' then

   cast(oResponse:Entity, JsonObject):WriteFile('/tmp/data.json').

message oResponse:StatusCode oResponse:Version oResponse:ContentLength view-as alert-box.

Any help would be appreciated.

Posted by ihuzjak on 06-Aug-2018 10:32

The issue was finally solved in a way that new version of API to which OE HTTP client makes request, returns responses exclusively in HTTP version 1.1, which enables OpenEdge to read all of the response (body too) correctly.

Posted by ihuzjak on 06-Aug-2018 10:33

The issue was finally solved in a way that new version of API to which OE HTTP client makes request, returns responses exclusively in HTTP version 1.1, which enables OpenEdge to read all of the response (body too) correctly.

Posted by ihuzjak on 06-Aug-2018 10:35

The issue was finally solved in a way that new version of API to which OE HTTP client makes request, returns responses exclusively in HTTP version 1.1, which enables OpenEdge to read all of the response (body too) correctly.

Posted by ihuzjak on 06-Aug-2018 10:36

The issue was finally solved in a way that new version of API to which OE HTTP client makes request, returns responses exclusively in HTTP version 1.1, which enables OpenEdge to read all of the response (body too) correctly.

Posted by marian.edu on 08-Aug-2018 11:50

If that is a chatbot it is not doing a very good job, can someone turn it off or at least create some variations? :)


Marian Edu

Acorn IT 
+40 740 036 212

Posted by onnodehaan on 19-Oct-2018 15:59

Hi.

I face the exact same problem. Running a request on Windows: everything works fine. Run it on Linux: error.

This thread is closed