Przykłady zapytań o własny IP
Każdy przykład wywołuje ten sam endpoint. Proces nawiązujący połączenie decyduje o tym, czyj adres IP zostanie zwrócony.
Użyj modułu JavaScript lub konsoli przeglądarki z natywnym fetch i AbortSignal.timeout.
const response = await fetch(
"https://api.ipquery.io/?format=json",
{ signal: AbortSignal.timeout(5000) }
);
if (!response.ok) {
const message = await response.text();
throw new Error("IPQuery " + response.status + ": " + message);
}
const data = await response.json();
console.log(JSON.stringify(data, null, 2));
Uruchom w powłoce z cURL. Błędy HTTP zwracają niezerowy kod zakończenia; komunikaty diagnostyczne trafiają do stderr.
curl --fail --silent --show-error --max-time 5 \
"https://api.ipquery.io/?format=json"
Python 3, wyłącznie biblioteka standardowa. Limit czasu dotyczy operacji na gniazdach.
import json
from urllib.request import urlopen
with urlopen("https://api.ipquery.io/?format=json", timeout=5) as response:
data = json.load(response)
print(json.dumps(data, indent=2))
Go, wyłącznie biblioteka standardowa. Zapisz jako main.go i uruchom go run main.go.
package main
import (
"io"
"log"
"net/http"
"os"
"time"
)
func main() {
client := &http.Client{Timeout: 5 * time.Second}
response, err := client.Get("https://api.ipquery.io/?format=json")
if err != nil { log.Fatal(err) }
defer response.Body.Close()
if response.StatusCode != http.StatusOK {
log.Fatalf("IPQuery %s", response.Status)
}
if _, err := io.Copy(os.Stdout, response.Body); err != nil {
log.Fatal(err)
}
}
Przykłady używają limitu czasu wynoszącego pięć sekund i standardowych narzędzi HTTP danego języka. Obsłuż błędy w aplikacji; nie zastępuj ich pustym rekordem IP.