Payload Details with std.net.curl:post
Kyle Ingraham
kyle at kyleingraham.com
Sat Nov 27 17:41:55 UTC 2021
Happy Saturday everyone. I am using `std.net.curl:post` to
request an OAuth access token from a Google API. Initially I was
getting a 400 status code back but could not tell why. I used the
`verbose` option on `HTTP()` to get more details:
```D
char[] tokenResponse;
auto connection = HTTP();
connection.verbose = true;
try
{
tokenResponse = post
(
tokenRequestEndpoint,
["code": incomingCode, "redirect_uri":
tokenRequestRedirectUrl,
"grant_type": "authorization_code", "code_verifier":
to!string(codeVerifier),
"client_id": clientId, "client_secret": clientSecret],
connection
);
}
catch(HTTPStatusException e)
{
writefln("Token request failed - Status code: %d - Message:
%s\n", e.status, e.msg);
return 1;
}
```
That `verbose` option gets me a detailed log but I cannot see the
payload of my request nor that of the response:
```
* Trying 172.217.165.10:443...
* TCP_NODELAY set
* Connected to www.googleapis.com (172.217.165.10) port 443 (#0)
> POST /oauth2/v4/token HTTP/1.1
Host: www.googleapis.com
User-Agent: Phobos-std.net.curl/2.098 (libcurl/7.68.0)
Accept:
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-Length: 16
Content-Type: application/x-www-form-urlencoded
* We are completely uploaded and fine
* Mark bundle as not supporting multiuse
< HTTP/1.1 400 Bad Request
< Content-Type: application/json; charset=utf-8
< Vary: X-Origin
< Vary: Referer
< Date: Sat, 27 Nov 2021 14:24:45 GMT
< Server: scaffolding on HTTPServer2
< Cache-Control: private
< X-XSS-Protection: 0
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< Alt-Svc: h3=":443"; ma=2592000,h3-29=":443";
ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443";
ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000;
v="46,43"
< Accept-Ranges: none
< Vary: Origin,Accept-Encoding
< Transfer-Encoding: chunked
<
* Connection #0 to host www.googleapis.com left intact
```
Is there a way to see that information? Google's API does not
seem to provide much more than a status code as to the reason for
the failure.
More information about the Digitalmars-d-learn
mailing list