[asterisk-dev] how to get json body from client->ser

Matthew Jordan mjordan at digium.com
Wed Feb 4 07:00:39 CST 2015

On Tue, Feb 3, 2015 at 10:05 PM, Vipul Rastogi
<vipul.rastogi at temasys.com.sg> wrote:
> I am trying to retrieve json body from http response (below code) but
> ast_http_get_json method expects ast_variable which is probably list of
> headers. so question is how to I get this from client (or client->ser).
> Suggestions most welcome !
> res_http_websocket.c -> websocket_client_handshake_get_response()
> struct ast_variable temp;
> struct ast_json *body = ast_http_get_json(client->ser, &temp);
> ast_log(LOG_ERROR, "After get json");
> struct ast_json *field = ast_json_object_get(body, "sid");
> ast_log(LOG_ERROR, "After get sid");
> if (field) {
> ast_log(LOG_ERROR, "received sid=%s",ast_json_string_get(field));
> }

The headers are provided used by that function are typically provided
in an ast_http_callback. Functions wanting to use ast_http_get_json to
extract a JSON body should pass the provided headers into the
function. Since these functions are specific to the HTTP server, they
were never envisioned being used by the websocket client code.

Since websocket_client_handshake_get_response is parsing out the HTTP
headers itself, you will need to store those in an ast_variable list,
and then attempt to call ast_http_get_json to pull out the JSON body.

That being said, I'm not sure why a server would be sending back a
JSON body during a handshake. What are you trying to implement? If
you're attempting to handle a JSON body passed to the websocket on the
initial connection attempt, what are you trying to extract, and why?

Matthew Jordan
Digium, Inc. | Engineering Manager
445 Jan Davis Drive NW - Huntsville, AL 35806 - USA
Check us out at: http://digium.com & http://asterisk.org

More information about the asterisk-dev mailing list