首页 > 其他分享 >Go Lang实现unix时间戳与日期格式互转

Go Lang实现unix时间戳与日期格式互转

时间:2024-09-18 11:13:11浏览次数:11  
标签:Lang http string err res fmt Println unix 互转

/*
 *golang几种post请求方式
 *参考:https://www.cnblogs.com/mafeng/p/7068837.html
*/

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "net/url"
    "regexp"
    "strings"
)

func main() {
    http_get("http://www.01happy.com/demo/accept.php?id=1")                   //http.Get的方式请求
    http_post("http://www.01happy.com/demo/accept.php", "name=cjb&id=100")    //http.post的方式请求
    http_PostForm("http://www.01happy.com/demo/accept.php")                   //http.PostForm方法
    http_do_get("http://www.01happy.com/demo/accept.php?id=1")                //http.do方法的GET方式进行请求
    http_do_post("http://www.01happy.com/demo/accept.php", "name=cjb&id=100") //http.do方法的POST方式进行请求
    http_do_get_proxy("https://2021.ip138.com/")                              //代理访问
}

/*
 * 1. http.Get的方式请求
 */
func http_get(urls string) string {
    fmt.Println("----------1. http.Get的方式请求-------------")
    var res_html string = ""
    resp, err := http.Get(urls)
    if err != nil {
        fmt.Println("http get error", err)
    }

    defer resp.Body.Close() //函数结束时关闭Body

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("read error", err)
    }
    res_html = string(body)
    fmt.Println("返回结果:", res_html)
    return res_html
}

/*
 * 2. http.post的方式请求
 * 使用这个方法的话,第二个参数要设置成”application/x-www-form-urlencoded”,否则post参数无法传递
 */
func http_post(urls, data string) string {
    fmt.Println("----------2. http.post的方式请求-------------")
    var res_html string = ""

    resp, err := http.Post(urls,
        "application/x-www-form-urlencoded",
        strings.NewReader(data))

    if err != nil {
        fmt.Println("http get error", err)
    }

    defer resp.Body.Close() //函数结束时关闭Body

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("read error", err)
    }
    res_html = string(body)
    fmt.Println("返回结果:", res_html)
    return res_html
}

/*
 * 3. http.PostForm方法
 */
func http_PostForm(urls string) string {
    fmt.Println("----------2. http.PostForm的方式请求-------------")
    var res_html string = ""

    resp, err := http.PostForm(urls, url.Values{"key": {"Value"}, "id": {"123"}})
    if err != nil {
        fmt.Println("http from post error", err)
    }

    defer resp.Body.Close() //函数结束时关闭Body

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("read error", err) // handle error
    }

    res_html = string(body)
    fmt.Println("返回结果:", res_html)
    return res_html
}

/*
 * 4. http.do方法的GET方式进行请求
 * 有时需要在请求的时候设置Header、cookie, 请求体、代理、证书验证等参数之类的数据,就可以使用http.Do方法。
 */
func http_do_get(urls string) string {
    fmt.Println("----------4. http.do方法的GET方式进行请求-------------")
    var res_html string = ""

    httpClient := &http.Client{}

    req, err := http.NewRequest("GET", urls, nil) //GET方式提交数据
    if err != nil {
        fmt.Println("http do get error", err)
    }

    sp_host := strings.Split(urls, "//")[1]
    host := strings.Split(sp_host, "/")[0]
    req.Header.Set("Host", host)
    req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0")
    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
    req.Header.Set("Connection", "keep-alive")

    res, err := httpClient.Do(req) //发送请求
    if err != nil {
        log.Fatalln("Fail: The web address cannot be accessed!\n") //网址打不开时提示错误信息!
    }

    defer res.Body.Close() //函数结束时关闭Body

    body, err := ioutil.ReadAll(res.Body)
    if err != nil {
        fmt.Println("read error", err)
    }

    res_html = string(body)
    fmt.Println("返回结果:", res_html)
    return res_html
}

/*
 * 5. http.do方法的POST方式进行请求
 * 有时需要在请求的时候设置Header、cookie, 请求体、代理、证书验证等参数之类的数据,就可以使用http.Do方法。
 */
func http_do_post(urls, data string) string {
    fmt.Println("----------5. http.do方法的POST方式进行请求-------------")
    var res_html string = ""

    httpClient := &http.Client{}

    req, err := http.NewRequest("POST", urls, strings.NewReader(data)) //POST方式提交数据
    if err != nil {
        fmt.Println("http do post error", err)
    }

    sp_host := strings.Split(urls, "//")[1]
    host := strings.Split(sp_host, "/")[0]
    req.Header.Set("Host", host)
    req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0")
    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
    req.Header.Set("Connection", "keep-alive")

    res, err := httpClient.Do(req) //发送请求
    if err != nil {
        log.Fatalln("Fail: The web address cannot be accessed!\n") //网址打不开时提示错误信息!
    }

    defer res.Body.Close() //函数结束时关闭Body

    body, err := ioutil.ReadAll(res.Body)
    if err != nil {
        fmt.Println("read error", err)
    }

    res_html = string(body)
    fmt.Println("返回结果:", res_html)
    return res_html
}

/*
 * 6. http.do方法的GET方式进行请求并设置代理访问
 * 有时需要在请求的时候设置Header、cookie, 请求体、代理、证书验证等参数之类的数据,就可以使用http.Do方法。
 */
func http_do_get_proxy(urls string) string {
    fmt.Println("----------6. http.do方法的GET方式进行请求并设置代理访问-------------")
    var res_html string = ""

    //设置代理
    proxyURL, _ := url.Parse("http://127.0.0.1:10809")
    trans := &http.Transport{
        Proxy: http.ProxyURL(proxyURL),
    }

    httpClient := &http.Client{
        Transport: trans,
    }

    req, err := http.NewRequest("GET", urls, nil)
    if err != nil {
        fmt.Println("http do post error", err)
    }

    sp_host := strings.Split(urls, "//")[1]
    host := strings.Split(sp_host, "/")[0]
    req.Header.Set("Host", host)
    req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0")
    req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
    req.Header.Set("Connection", "keep-alive")

    res, err := httpClient.Do(req) //发送请求
    if err != nil {
        log.Fatalln(err) //网址打不开时提示错误信息!
    }

    defer res.Body.Close() //函数结束时关闭Body

    body, err := ioutil.ReadAll(res.Body)
    if err != nil {
        fmt.Println("read error", err)
    }

    //正则匹配返回结果中的的IP信息
    reg, _ := regexp.Compile("您的iP地址是:\\[.+?\\]")
    sproxy := reg.FindString(string(body))

    res_html = string(body)
    fmt.Println("使用代理后你的IP地址是:", sproxy) //打印
    //fmt.Println("返回结果:", res_html)
    return res_html
}

 

标签:Lang,http,string,err,res,fmt,Println,unix,互转
From: https://www.cnblogs.com/codtina/p/18418119

相关文章

  • 数据控制语言(DCL,Data Control Language)
    目录GRANT语句REVOKE语句权限类型数据控制语言(DCL,DataControlLanguage)用于管理数据库中的权限和访问控制。DCL语句主要用于控制用户对数据库对象的访问权限。常见的DCL语句有GRANT和REVOKE。GRANT语句GRANT语句用于授予用户或角色对数据库对象(如表、视图......
  • (论文解读)Visual-Language Prompt Tuning with Knowledge-guided Context Optimization
    Comment:acceptedbyCVPR2023基于知识引导上下文优化的视觉语言提示学习摘要提示调优是利用任务相关的可学习标记将预训练的视觉语言模型(VLM)适应下游任务的有效方法。基于CoOp的代表性的工作将可学习的文本token与类别token相结合,来获得特定的文本知识。然而,这些特定的文......
  • 26.删除有序数组中的重复项 Golang实现
    题目描述:给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改......
  • 前端大模型入门:掌握langchain的核心Runnable接口(一)
    在构建复杂的对话式AI应用程序时,Langchain是一个绕不开的工具,它帮助开发人员轻松地处理各种语言模型的集成与管理。v0.3是该框架的一个重要版本,它进一步优化了功能,提升了在JavaScript/TypeScript环境下的易用性。本文将介绍Langchainv0.3的核心功能,并特别着重于其Runnab......
  • AnomalyLLM: Few-shot Anomaly Edge Detection for Dynamic Graphs using Large Langu
    本文是LLM系列文章,针对《AnomalyLLM:Few-shotAnomalyEdgeDetectionforDynamicGraphsusingLargeLanguageModels》的翻译。AnomalyLLM:使用大型语言模型对动态图进行少量异常边缘检测摘要1引言2相关工作3前言4方法5实验6结论摘要检测动态图的......
  • ANAH: Analytical Annotation of Hallucinations in Large Language Models
    本文是LLM系列文章,针对《ANAH:AnalyticalAnnotationofHallucinationsinLargeLanguageModels》的翻译。ANAH:大型语言模型中幻觉的分析注释摘要1引言2数据集构造3幻觉注释器4实验5相关工作6结论和未来工作7局限性摘要减少大型语言模型(LLM)的......
  • 《黑神话:悟空》游戏突发崩溃:AkFlanger.dll 文件错误如何处理?
    AkFlanger.dll文件错误的原因可以归结为多个方面,这些原因可能单独或共同作用导致文件丢失、损坏或无法被系统正确加载。以下是对AkFlanger.dll文件错误原因的分析:文件被误删除或移动:用户可能在清理系统垃圾文件、卸载软件或进行磁盘整理时不小心删除了AkFlanger.dll文件......
  • autoGPT metagpt crewAI langgraph autogen camel 哪些框架适用于多模态场景?(文心一言)
    autoGPTmetagptcrewAIlanggraphautogencamel哪些框架适用于多模态场景?特点:CrewAI是一个专门用于创建多模态代理的技术,能够同时处理文本、图像和音频数据。它提供了构建多模态代理所需的工具和库,使得开发者能够更容易地集成不同模型以处理多种数据类型。应用场景:适用于......
  • Verilog - ASCII码与16进制相互转换(Task语句,多个ASCII码转换)
    编程思想:1.使用case语句,将Ascii码与Hex对应关系连接;2.使用Task语句将Ascii码转Hex作为一个任务3.调用Task语句,将8bit Ascii码转换为4bitHex数据4.将n个8bitASCII转为n个4bitHex数据进行数据拼接,输出n*4bitHEX数据moduleascii_to_hex(input......
  • Java.lang中的String类和StringBuilder类介绍和常用方法
    目录Java.lang中的String类和StringBuilder类介绍和常用方法String类介绍String类的底层成员介绍基本介绍回顾String传址调用问题String类对象的创建方式String面试题创建对象or不创建对象创建了几个对象and共有几个对象String常用方法判断字符串是否相等方法获......