HttpError$ ( request )

Parameters

request - a request from HttpRequest

Description

Returns why a request ended without an answer, or "".

When HttpStatus is below 0, HttpError says why in words, such as that the server could not be found or that its certificate is not trusted. Show it to the player when a download fails, or write it to the debug log while you test. While the request runs, and once it has an answer, it returns "".

The words come from the computer or the browser, so they vary between Windows, the Mac and the web. Decide what to do from HttpStatus's number, not from these words.


See also: HttpStatus, HttpRequest, FreeHttpRequest.

Example

; HttpRequest Example
; -------------------

Graphics 640,480,0,2
SetBuffer BackBuffer()

; The Khronos Group's list of glTF sample models: a JSON file on GitHub
url$="https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Assets/main/Models/model-index.json"

; Start the request: HttpRequest returns at once, and the answer
; arrives while the program carries on
request=HttpRequest(url)

; The first 20 model names, once the answer is in
Dim names$(19)
count=0
unread=True

While Not KeyDown(1)

    ; Space asks again
    If KeyHit(57) Then
        FreeHttpRequest request
        request=HttpRequest(url)
        unread=True
        count=0
    EndIf

    ; HttpStatus is 0 while the request runs, then the HTTP status
    status=HttpStatus(request)
    If status=200 And unread Then
        ; The answer is text: here, a JSON array of models
        index=ParseJson(HttpText(request))
        If index Then
            count=JsonCount(index)
            For i=0 To 19
                If i<count Then
                    model=JsonArrayGet(index,i)
                    label=JsonObjectGet(model,"label")
                    names(i)=JsonText(label)
                    FreeJson label
                    FreeJson model
                EndIf
            Next
            FreeJson index
        EndIf
        unread=False
    EndIf

    Cls
    Text 0,0,"Space: ask again   Esc: exit"
    If status=0 Then
        Text 0,20,"Asking GitHub for the glTF sample models..."
    ElseIf status<0 Then
        ; Below 0, the request ended without an answer
        Text 0,20,"No answer: "+HttpError(request)
    Else
        Text 0,20,"HttpStatus: "+status+"   Content-Type: "+HttpHeader(request,"Content-Type")
        Text 0,40,count+" models; the first 20:"
        For i=0 To 19
            Text 20,70+i*20,names(i)
        Next
    EndIf

    ; Waiting a frame lets the answer arrive, on the web too
    Flip

Wend

FreeHttpRequest request
End

Index