文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

基于GO的IP地址查询

2024-04-02 19:55

关注

一、开通接口

免费IP地址查询服务使用聚合数据提供的免费接口,每天可以100次免费调用。可以通过https://www.juhe.cn/docs/api/id/1 注册及开通。

二、使用GO调用接口

package main

import (
	"net/url"
	"fmt"
	"net/http"
	"io/ioutil"
	"encoding/json"
)

func main() {
	// 接口请求URL
	apiUrl := "http://apis.juhe.cn/ip/ipNew"

	// 初始化参数
	param := url.Values{}

	// 配置请求参数,方法内部已处理urlencode问题,中文参数可以直接传参
	param.Set("ip", "58.215.155.153")                    // 需要查询的IP地址
	param.Set("key", "您在聚合申请的接口请求Key") // 接口请求Key

	// 发送请求
	data, err := Get(apiUrl, param)
	if err != nil {
		// 请求异常,根据自身业务逻辑进行调整修改
		fmt.Errorf("请求异常:\r\n%v", err)
	} else {
		var netReturn map[string]interface{}
		jsonerr := json.Unmarshal(data, &netReturn)
		if jsonerr != nil {
			// 解析JSON异常,根据自身业务逻辑进行调整修改
			fmt.Errorf("请求异常:%v", jsonerr)
		} else {
			errorCode := netReturn["error_code"]
			reason := netReturn["reason"]
			data := netReturn["result"]

			if errorCode.(float64) == 0 {
				// 查询成功,根据自身业务逻辑进行调整修改
				fmt.Printf("查询结果\n国家:%v\n省份:%v\n城市:%v\n运营商:%v\n",
					data.(map[string]interface{})["Country"],
					data.(map[string]interface{})["Province"],
					data.(map[string]interface{})["City"],
					data.(map[string]interface{})["Isp"])
			} else {
				// 查询失败,根据自身业务逻辑进行调整修改
				fmt.Printf("查询失败:%v_%v", errorCode.(float64), reason)
			}
		}
	}
}

// get 方式发起网络请求

func Get(apiURL string, params url.Values) (rs []byte, err error) {
	var Url *url.URL
	Url, err = url.Parse(apiURL)
	if err != nil {
		fmt.Printf("解析url错误:\r\n%v", err)
		return nil, err
	}
	//如果参数中有中文参数,这个方法会进行URLEncode
	Url.RawQuery = params.Encode()
	resp, err := http.Get(Url.String())
	if err != nil {
		fmt.Println("err:", err)
		return nil, err
	}
	defer resp.Body.Close()
	return ioutil.ReadAll(resp.Body)
}

// post 方式发起网络请求 ,params 是url.Values类型
func Post(apiURL string, params url.Values) (rs []byte, err error) {
	resp, err := http.PostForm(apiURL, params)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	return ioutil.ReadAll(resp.Body)
}

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯