this was meant to be a simplistic example showing one potential solution to attempt to parse out information from a website, specifically left out any form of error checking as to not get too convoluted and the method get lost behind all the extra bits... There is ZERO error checking in this example... You should test the $urlget(ID).state for "ok" or "fail" (fail will mean something went wrong so the binvar doesn't exist)

You should also look at the beginning of $urlget(Id).reply (which is an unusual name scheme for the return headers...) for the specific return code also before attempting to process any further, which can give you insight on if the binvar will contain anything, or to why your request failed.

Other reasons could be usage, like using other options like "hpuad"
h=head (request headers only, no body)

u=put (You're pushing a resource, and awaiting a conformation header upon completion)

a=patch (you're pushing a partial modification to a resource, and awaiting a conformation header upon completion)

d=delete (you're requesting a resource be removed, and awaiting a conformation header upon completion)

p=post (your body is form data, typically used with a header of Content-type: multipart/form-data accompanied by a Content-Length: of how many bytes are within your post body. multipart/form-data uses a boundary to isolate form fields typically used for items such as file-uploads. You don't have to use multipart/form-data, it could also represent form-data similar to a query-string from a GET request, the extra bits after the "?")

Typically a successful POST results in a return body, but does not have to...

I believe any HTTP response NOT in the 200's range will result in the binvar not being filled, 400+ range will result in a $urlget(Id).state of "fail".

In your case, the response from the server was a 403 forbidden, resulting in $urlget(Id).state being a "fail" and nothing being filled into the binvar.

The most common responses are as follows:
100=Continue
101=Switching Protocols
200=OK
201=Created
202=Accepted
203=Non-Authoritative Information
204=No Content
205=Reset Content
206=Partial Content
300=Multiple Choices
301=Moved Permanently
302=Found
303=See Other
304=Not Modified
305=Use Proxy
307=Temporary Redirect
400=Bad Request
401=Unauthorized
402=Payment Required
403=Forbidden
404=Not Found
405=Method Not Allowed
406=Not Acceptable
407=Proxy Authentication Required
408=Request Time-out
409=Conflict
410=Gone
411=Length Required
412=Precondition Failed
413=Request Entity Too Large
414=Request-URI Too Large
415=Unsupported Media Type
416=Requested range not satisfiable
417=Expectation Failed
426=Upgrade Required
431=Request Header Fields Too Large
500=Internal Server Error
501=Not Implemented
502=Bad Gateway
503=Service Unavailable
504=Gateway Time-out
505=HTTP Version not supported