init
This commit is contained in:
84
utils/ip_request.go
Normal file
84
utils/ip_request.go
Normal file
@@ -0,0 +1,84 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
|
||||
"github.com/go-resty/resty/v2"
|
||||
)
|
||||
|
||||
type IpRequest struct {
|
||||
}
|
||||
|
||||
type IPAPIResponse struct {
|
||||
As string `json:"as"`
|
||||
Asname string `json:"asname"`
|
||||
City string `json:"city"`
|
||||
Continent string `json:"continent"`
|
||||
ContinentCode string `json:"continentCode"`
|
||||
Country string `json:"country"`
|
||||
CountryCode string `json:"countryCode"`
|
||||
Currency string `json:"currency"`
|
||||
District string `json:"district"`
|
||||
Hosting bool `json:"hosting"`
|
||||
Isp string `json:"isp"`
|
||||
Lat float64 `json:"lat"`
|
||||
Lon float64 `json:"lon"`
|
||||
Mobile bool `json:"mobile"`
|
||||
Offset float64 `json:"offset"`
|
||||
Org string `json:"org"`
|
||||
Proxy bool `json:"proxy"`
|
||||
Query string `json:"query"`
|
||||
Region string `json:"region"`
|
||||
RegionName string `json:"regionName"`
|
||||
Timezone string `json:"timezone"`
|
||||
Zip string `json:"zip"`
|
||||
}
|
||||
|
||||
func (*IpRequest) IpApi(targetIP string) (IPAPIResponse, error) {
|
||||
// 创建Resty客户端
|
||||
client := resty.New()
|
||||
|
||||
// 构建请求URL
|
||||
// targetIP := "103.142.140.235"
|
||||
var url string = "http://demo.ip-api.com/json?fields=66842623&lang=en"
|
||||
if targetIP != "" {
|
||||
url = fmt.Sprintf("http://demo.ip-api.com/json/%s?fields=66842623&lang=en", targetIP)
|
||||
}
|
||||
|
||||
// 创建响应结构体实例
|
||||
var result IPAPIResponse
|
||||
|
||||
// 发送GET请求(不设置任何请求头)
|
||||
resp, err := client.R().
|
||||
SetResult(&result). // 自动解析JSON到结构体
|
||||
Get(url)
|
||||
|
||||
// 错误处理
|
||||
if err != nil {
|
||||
fmt.Printf("请求失败: %v\n", err)
|
||||
return result, err
|
||||
}
|
||||
|
||||
// 检查HTTP状态码
|
||||
if resp.StatusCode() != 200 {
|
||||
fmt.Printf("API返回错误状态码: %d\n", resp.StatusCode())
|
||||
return result, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (*IpRequest) GetIPAddress() {
|
||||
// 创建Resty客户端
|
||||
client := resty.New()
|
||||
var url string = "http://icanhazip.com/"
|
||||
// 发送GET请求(不设置任何请求头)
|
||||
resp, err := client.R().
|
||||
Get(url)
|
||||
// 错误处理
|
||||
if err != nil {
|
||||
fmt.Printf("请求失败: %v\n", err)
|
||||
}
|
||||
log.Println(resp)
|
||||
}
|
||||
Reference in New Issue
Block a user