• Re: making http request with gforth

    From josv@21:1/5 to josv on Sun Dec 29 13:12:26 2024
    On Fri, 27 Dec 2024 15:33:05 +0000, josv wrote:

    On Thu, 26 Dec 2024 12:40:33 +0000, okflo@teletyp.ist wrote:

    hi forthers,

    I am trying to do a (very simple and naive) http-request
    with gforth (current from git):

    #+begin_src forth
    require unix/socket.fs

    : test-http
    s" httpbin.org" 80 open-socket >r
    s" GET / HTTP/1.1\nHost httpbin.org\n\n" r@ write-socket
    r@ pad 80 read-socket
    r> close-socket ;
    #+end_src

    but /read-socket/ doesn't return anything - result is pad 0 on
    the stack.

    probably I misunderstand howto use socket.fs?

    additional question - has anyone already done bindings for
    libcurl?

    many thanks for any hints & merry christmas - okflo

    Try:
    require unix/socket.fs

    : test-http
    s" httpbin.org" 80 open-socket >r
    s" GET HTTP/1.1\nHost httpbin.org\n\n" r@ write-socket
    200 ms
    r@ pad 80 read-socket .s
    r> close-socket
    cr type ;

    Result after: test-http

    HTTP/1.1 400 Bad Request
    Server: awselb/2.0
    Date: Fri, 27 Dec 2024 15:25:43 GM

    Note: The site begins with https in a browser!
    Jos

    --
    The 200 ms is indeed a crude way.
    See https://www.gnu.org/software/libc/manual/html_node/Listening.html
    for more details especially the pages about listing and accepting
    connections

    I never used ssl/tls.
    Jos

    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From okflo@teletyp.ist@21:1/5 to All on Thu Dec 26 13:40:33 2024
    hi forthers,

    I am trying to do a (very simple and naive) http-request
    with gforth (current from git):

    #+begin_src forth
    require unix/socket.fs

    : test-http
    s" httpbin.org" 80 open-socket >r
    s" GET / HTTP/1.1\nHost httpbin.org\n\n" r@ write-socket
    r@ pad 80 read-socket
    r> close-socket ;
    #+end_src

    but /read-socket/ doesn't return anything - result is pad 0 on
    the stack.

    probably I misunderstand howto use socket.fs?

    additional question - has anyone already done bindings for
    libcurl?

    many thanks for any hints & merry christmas - okflo

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From josv@21:1/5 to okflo@teletyp.ist on Fri Dec 27 15:33:05 2024
    On Thu, 26 Dec 2024 12:40:33 +0000, okflo@teletyp.ist wrote:

    hi forthers,

    I am trying to do a (very simple and naive) http-request
    with gforth (current from git):

    #+begin_src forth
    require unix/socket.fs

    : test-http
    s" httpbin.org" 80 open-socket >r
    s" GET / HTTP/1.1\nHost httpbin.org\n\n" r@ write-socket
    r@ pad 80 read-socket
    r> close-socket ;
    #+end_src

    but /read-socket/ doesn't return anything - result is pad 0 on
    the stack.

    probably I misunderstand howto use socket.fs?

    additional question - has anyone already done bindings for
    libcurl?

    many thanks for any hints & merry christmas - okflo

    Try:
    require unix/socket.fs

    : test-http
    s" httpbin.org" 80 open-socket >r
    s" GET HTTP/1.1\nHost httpbin.org\n\n" r@ write-socket
    200 ms
    r@ pad 80 read-socket .s
    r> close-socket
    cr type ;

    Result after: test-http

    HTTP/1.1 400 Bad Request
    Server: awselb/2.0
    Date: Fri, 27 Dec 2024 15:25:43 GM

    Note: The site begins with https in a browser!
    Jos

    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From okflo@21:1/5 to josv on Fri Dec 27 21:59:17 2024
    Hoi Jos,

    josv@planet.nl (josv) writes:

    I am trying to do a (very simple and naive) http-request
    with gforth (current from git):

    #+begin_src forth
    require unix/socket.fs

    : test-http
    s" httpbin.org" 80 open-socket >r
    s" GET / HTTP/1.1\nHost httpbin.org\n\n" r@ write-socket
    r@ pad 80 read-socket
    r> close-socket ;
    #+end_src
    [...]
    additional question - has anyone already done bindings for
    libcurl?

    Try:
    require unix/socket.fs

    : test-http
    s" httpbin.org" 80 open-socket >r
    s" GET HTTP/1.1\nHost httpbin.org\n\n" r@ write-socket
    200 ms
    r@ pad 80 read-socket .s
    close-socket
    cr type ;

    Result after: test-http

    HTTP/1.1 400 Bad Request
    Server: awselb/2.0
    Date: Fri, 27 Dec 2024 15:25:43 GM

    thanks - that did it - so at least from a conceptual point of view :) I
    did it right...

    but what would be right way to /wait/ for a response? 200ms is just a
    guess, isn't it? :)

    Note: The site begins with https in a browser!

    yep, ssl/tls would be my next question, actually I hoped, someone could
    point me to a library f.e. incorporating libcurl or something similar.

    Jos

    okflo
    --

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)