Go语言中的HTTP client, server非常简单。具体如下。

HTTP Server

package  main

import (
"fmt"
"html"
"io/ioutil"
"log"
"net/http" ) func main() { http.HandleFunc("/bar", func (w http.ResponseWriter, r *http.Request){
fmt.Fprintf(w, "Hello, %q", html.EscapeString(r.URL.Path)) if r.Method == "POST" {
b, err := ioutil.ReadAll(r.Body)
if err != nil {
log.Println("Read failed:", err)
}
defer r.Body.Close() log.Println("b:", string(b))
} else { log.Println("ONly support Post")
w.Write([]byte("Only support post"))
} }) log.Fatal(http.ListenAndServe(":8080", nil)) }

HTTP Client

  1. GET方式

    package main
    
    import (
    "io/ioutil"
    "log"
    "net/http" ) func main() { url := "http://127.0.0.1:8080/bar" resp, err := http.Get(url)
    if err != nil {
    log.Println("Get failed:", err)
    return
    } defer resp.Body.Close() if resp.StatusCode != http.StatusOK {
    log.Println("statuscode:", resp.StatusCode) } content, err := ioutil.ReadAll(resp.Body)
    if err != nil {
    log.Println("Read failed:", err)
    } log.Println("content:", string(content)) }
  2. POST方式

    package main
    
    import (
    "bytes"
    "io/ioutil"
    "log"
    "net/http" ) func main() { url := "http://127.0.0.1:8080/bar"
    contentType := "application/json;charset=utf-8" b := []byte("Hello, Server")
    body := bytes.NewBuffer(b) resp, err := http.Post(url, contentType, body)
    if err != nil {
    log.Println("Post failed:", err)
    return
    } defer resp.Body.Close() content, err := ioutil.ReadAll(resp.Body)
    if err != nil {
    log.Println("Read failed:", err)
    return
    } log.Println("content:", string(content)) }

注意:

response的Body使用后记得close,即:

resp.Body.Close()

关于如何传递json格式数据,可以参考博文go http 传递json数据

go http client, http server的更多相关文章

  1. UDP编程中client和server中使用recvfrom和sendto的区别

    client中:      sendto(sfd,buf,strlen(buf),0,(struct sockaddr *)&saddr,len);      recvfrom(sfd,buf ...

  2. tmux protocol version mismatch (client 7, server 6)

    $ tmux attach protocol version mismatch (client 7, server 6) $ pgrep tmux 3429 $ /proc/3429/exe atta ...

  3. New full duplex HTTP tunnel implementation (client and server)

    https://issues.jboss.org/browse/NETTY-246?page=com.atlassian.jirafisheyeplugin:fisheye-issuepanel —— ...

  4. jvm的client和server

    最近研究c++代码调用java的jar,发现64位的下的jvm在server路径,而32位的jvm则存在client路径下面,于是十分好奇,查了下,这里做个记录 JVM Server模式与client ...

  5. Android简单的聊天室开发(client与server沟通)

    请尊重他人的劳动成果.转载请注明出处:Android开发之简单的聊天室(client与server进行通信) 1. 预备知识:Tcp/IP协议与Socket TCP/IP 是Transmission ...

  6. The client and server cannot communicate, because they do not possess a common algorithm

    The client and server cannot communicate, because they do not possess a common algorithm This was re ...

  7. onvif协议client与server对接

    happytimesoft有完整的c语言开发的onvif client和server,一共1000$,真便宜,haha. http://www.happytimesoft.com/products/m ...

  8. 带入gRPC:gRPC Streaming, Client and Server

    带入gRPC:gRPC Streaming, Client and Server 原文地址:带入gRPC:gRPC Streaming, Client and Server 前言 本章节将介绍 gRP ...

  9. ESP8266 station模式下建立client、server TCP连接

    程序实现内容: 1.在station模式下,ESP8266作为client.server进行TCP连接2.实现数据的发送.接收(同时回传)实现思路:TCP网络通信分层为:应用层.网络层.数据链路层.物 ...

随机推荐

  1. c++ 发送消息,模拟拖拽文件

    #include <ShlObj.h> BOOL SimulateDropFile(CString strFilePath) { }; wcstombs(szFile, strFilePa ...

  2. 072——VUE中vuex之使用mutations修改购物车仓库数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. hdu3874

    题解: 和上一题基本相同 插入的时候变一下数值 具体看http://www.cnblogs.com/xuanyiming/p/7921926.html 代码: #include<cstdio&g ...

  4. Nodejs之mssql模块的封装

    在nodejs中,mssql模块支持sqlserver数据库操作.今天将mssql模块的某些功能封装为一个类,方便以后调用.封装的功能有执行存储过程,执行查询语句操作等.如果本篇文章对大家有帮助,那就 ...

  5. DevExpress v17.2新版亮点—WPF篇(七)

    用户界面套包DevExpress v17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WPF v17.2 新的Hamburger Menu.Sched ...

  6. Loom

    <iframe width="630" height="394" src="https://www.useloom.com/embed/a9d4 ...

  7. php变量和字符串连接符——点

    连接符——点,本身也是一种运算符.它真正的名字应该叫“字符运算符”.作用是把两个字符串连接起来. echo 字符 . 变量 . 字符;  //点号把三个值连接成为一个,运行正常. 例: 1.字符串+变 ...

  8. node 相关

    1. 更新npm : npm install npm -g / cnpm install npm -g 2.安装cnpm npm install -g cnpm --registry=https:// ...

  9. fluent nhibernate映射的数值类型问题

    fluent nhibernate中,数值类型设置不当,就可能会引发一些意想不到错误. 一.引发映射错误 比如,oracle数据库中,字段ID类型是number,结果用codesmith生成代码,实体 ...

  10. NBUT 1223 Friends number 2010辽宁省赛

    Time limit  1000 ms Memory limit   131072 kB Paula and Tai are couple. There are many stories betwee ...