how to read Content-Length and request.header.Connection

Not applicable

Hi Team,

In postman response i am able to see below header varibles with value.

Connection - keep-alive Content-Length - 410

I am able to read "Connection" value in AssignMessage using below syntax

response.header.Connection

Same way when i try to read below fields, i am not getting the value, its coming as empty value. response.header.Content-Length

request.header.Connection

Please let me know if there is any other way to get it.

Thanks, Satheesh.K

0 8 6,262
8 REPLIES 8

Not applicable

Can anyone please help on this request?

adas
New Member

@kumarsathe Here's the simple proxy with an assignmessage policy that demonstrates how to add the response headers. In the sample response, you will find 2 headers x-custom-connection and x-custom-content-length which are added to the original response:

curl -v http://api.demo.apigee.net:9009/v1/demo/get

< HTTP/1.1 200 OK

< Server: nginx

< Date: Sat, 29 Aug 2015 15:05:53 GMT

< Content-Type: application/json

< Content-Length: 187

< Access-Control-Allow-Origin: *

< Access-Control-Allow-Credentials: true

< x-custom-connection: keep-alive

< x-custom-content-length: 187

< Connection: keep-alive

< 

{

  "args": {}, 

  "headers": {

    "Accept": "*/*", 

    "Host": "httpbin.org", 

    "User-Agent": "curl/7.43.0"

  }, 

  "origin": "54.157.224.128", 

  "url": "http://httpbin.org/get"

}

Proxy zip attached.

Not applicable

Hi @kumarsathe,

If you are getting Content-Length value as null /empty you can simply calculate it using the below Javascript:

var contentLength = context.getVariable("response.header.Content-Length");

if ( ! contentLength ) {

var responseContent = context.getVariable('response.content');

contentLength = responseContent.length;

context.setVariable("response.header.Content-Length", contentLength);

}

Usually it is added by gateway once your response is created so if this header is not set, you can get the value using the above script .

As per above suggestion i able to get lengeth.

I am trying to get request.header.Connection using below code in js. In request i am passing 'Connection' parameter. but the value in coming as empty.

var reqConnection = context.getVariable("request.header.Connection"); context.setVariable("reqConnection", reqConnection);

if i change the variable name to 'Connection1' then able to get value. Why i am not able to get the value when i use 'Connection' ?

Not applicable

I am trying to get request.header.Connection using below code in js. In request i am passing 'Connection' parameter. but the value in coming as empty.

var reqConnection = context.getVariable("request.header.Connection"); context.setVariable("reqConnection", reqConnection);

if i change the variable name to 'Connection1' then able to get value. Why i am not able to get the value when i use 'Connection' ?

adas
New Member

@kumarsathe It would depend on where the policy is being attached in the flow. I would suggest you look at the proxy I attached and see if it works. Instead of the assign message I have in the proxy, you can have the js policy above and the same should continue to work.

In PreFlow

Now I am trying to get request.header.Connection using below code in js. In request i am passing 'Connection' parameter. but the value in coming as empty.

var reqConnection = context.getVariable("request.header.Connection"); context.setVariable("reqConnection", reqConnection);

if i change the variable name to 'Connection1' then able to get value. Why i am not able to get the value when i use 'Connection' ?

adas
New Member

@kumarsathe unless I take a look at your proxy, it would be hard to say. Can you attach your proxy and a sample call that you are making.