Getting the body of a HTTP Request

brian via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jan 27 15:42:54 PST 2016


Hello forumites

I am using vibe to connect to an (internal) API however, an am 
expecting to get back an authorization token with the body of a 
HTTP POST response.

/***** start code snippet *****/
shared static this()
{
     
requestHTTP("http://mywebsite.website.com/thelogonthing/oauth/authorize/login.do",
         (scope req) {
             req.method = HTTPMethod.POST;
             req.headers["grant_type"] = "password";
             req.headers["response_type"] = "token";
             req.headers["client_id"] = "app";
             req.headers["scope"] = "read";
             req.writeJsonBody(["username":"username at blah.com"
                     , "password":"mySecretPassword"]);
         },
         (scope res) {
             logInfo("Status Code: %s", res.statusCode);
             logInfo("Status Phrase: %s", res.statusPhrase);
             logInfo("http Version: %s", res.httpVersion);
             foreach(k,v; res.headers)
                 logInfo("Header: %s %s", k, v);

             logInfo("Content Type: %s", res.contentType);
             logInfo("Body: %s", res.bodyReader());

             logInfo("Body to String: %s", 
res.bodyReader.readAllUTF8);
             logInfo("Body to String: %s", res.toString());

             logInfo("Response Length: %s", res.readJson);
             string resJson = null;
         }
     );
...
/***** end code snippet *****/

However the response I get is empty.
The response I get for the above code is a whole lot of headers 
(excellent) followed by:

/***** start log snippet *****/
...
Header: Connection Keep-Alive
Content Type: text/plain; charset=utf-8
Body: vibe.stream.counting.EndCallbackInputStream
Body to String:
Body to String: HTTP/1.1 302 Found

core.exception.AssertError at ..\..\..\..\AppData\Roaming\dub\packages\vibe-d-0.7.2
6\source\vibe\core\log.d(128): (1): Error: JSON string is empty.
Program exited with code 1
/***** end log snippet *****/

I'm a little fuzzy as to how exactly I should be parsing and then 
outputting the body of the response. I've tried a few different 
combinations of trying to loop through and/or convert to string 
whatever is in `res.bodyReader` but honestly, I'm not sure I'm 
doing it right.

Anyone able to shed some light on what the structure of the 
response is, and how I can read/output it all?

Regards
Brian


More information about the Digitalmars-d-learn mailing list