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. Syntax error: Bad for loop variable解决办法

    从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell:其表现为 /bin/sh 链接倒了/bin/dash而不是传统的/bin/bash. ...

  2. kill word fore out

    1●   fore f ɔ: 预先,前面

  3. STM32F103各PIN脚封装图

    1.36PIN 2.48PIN 3.64PIN 4.100PIN STM32ZET6详细pin脚图

  4. POJ 2886 线段树单点更新

    转载自:http://blog.csdn.net/sdj222555/article/details/6878651 反素数拓展参照:http://blog.csdn.net/ACdreamers/a ...

  5. 非常简单的vue里面引入jquery

    如何在vue里面引入jq了,只需四部就完成 第一步 cnpm install jquery 第二步 打开build文件夹 , 打开webpack.base.conf.js文件找到下面module.ex ...

  6. hdu 1003 Max Sum (动态规划)

    转载于acm之家http://www.acmerblog.com/hdu-1003-Max-Sum-1258.html Max Sum Time Limit: 2000/1000 MS (Java/O ...

  7. L215 Visual impairment

    Visual impairment(视觉障碍)carries with it a reduced or restricted ability to travel through one’s physi ...

  8. Linux 内核链表实现和使用(一阴一阳,太极生两仪~)

    0. 概述 学习使用一下 linux 内核链表,在实际开发中我们可以高效的使用该链表帮我们做点事, 链表是Linux 内核中常用的最普通的内建数据结构,链表是一种存放和操作可变数据元 素(常称为节点) ...

  9. django中的ajax组件

    目录 django中的ajax 向服务器发送请求的途径 Ajax的特点 基于jquery实现的ajax请求 利用ajax实现计算器 利用ajax实现登陆认证 利用form表单进行文件上传 利用ajax ...

  10. select 从应用层到内核实现解析

    在一个应用中,如果需要读取多个设备文件,这其中有多种实现方式: 1.使用一个进程,并采用同步查询机制,不停的去轮询每一个设备描述符,当设备描述符不可用时,进程睡眠. 2:使用多个进程或者线程分别读取一 ...