HTTP
超文本传输协议 (HTTP) 是一种用于分布式协作超媒体信息系统的应用协议。 HTTP 协议是万维网数据通信的基础。
学习web,必须回http协议,万变不离其宗,http 基本请求都会有get和post方式。
获取get
HTTP GET 方法请求指定资源的表示。使用 GET 的请求应该只检索数据。
HTTP POST
HTTP POST 方法将数据发送到服务器。它通常用于上传文件或提交完整的 Web 表单。
go http
在 Go 中,我们使用 http 包来创建 GET 和 POST 请求。该包提供 HTTP 客户端和服务器实现。
go GET 请求
以下示例在 Go 中创建一个简单的 GET 请求。
通过使用自己的账号
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
)
func main() {
resp, err :=http.Get("https://www.jianshu.com/u/jianshuaccount")
if err !=nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, err :=ioutil.ReadAll(resp.Body)
if err !=nil {
log.Fatal(err)
}
fmt.Println(string(body))
}
抓取的get的页面内容如下:
GOROOT=D:\Program Files\Go #gosetup
GOPATH=D:\Users\dev\sdk\go1.15.14 #gosetup
"D:\Program Files\Go\bin\go.exe" build -o C:\Users\Dev\AppData\Local\Temp\GoLand\___go_build_get_go.exe D:\gowork\beegoDemo\src\main\get.go #gosetup
C:\Users\Dev\AppData\Local\Temp\GoLand\___go_build_get_go.exe #gosetup
<!DOCTYPE html>
<!--[if IE 6]><html class="ie lt-ie8"><![endif]-->
<!--[if IE 7]><html class="ie lt-ie8"><![endif]-->
<!--[if IE 8]><html class="ie ie8"><![endif]-->
<!--[if IE 9]><html class="ie ie9"><![endif]-->
<!--[if !IE]><!--> <html> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
<!-- Start of Baidu Transcode -->
<meta http-equiv="Cache-Control" content="no-siteapp" />
<meta http-equiv="Cache-Control" content="no-transform" />
<meta name="applicable-device" content="pc,mobile">
<meta name="MobileOptimized" content="width"/>
<meta name="HandheldFriendly" content="true"/>
<meta name="mobile-agent" content="format=html5;url=https://www.jianshu.com/u/0e95708b1552">
<!-- End of Baidu Transcode -->
<meta name="description" content="Technology is endless, life is endless">
<meta name="tencent-site-verification" content="39a5ed77a02c0103af6ac08addbc3851"/>
<meta name="360-site-verification" content="604a14b53c6b871206001285921e81d8" />
<meta property="wb:webmaster" content="294ec9de89e7fadb" />
<meta property="qc:admins" content="104102651453316562112116375" />
<meta property="qc:admins" content="11635613706305617" />
<meta property="qc:admins" content="1163561616621163056375" />
<meta name="google-site-verification" content="6ARJIxhZLIgZT7J8MZkENr5mR0-CqshgzYyA3r3jBWU" />
<meta http-equiv="mobile-agent" content="format=html5; url=https://www.jianshu.com/u/XXXXXXX">
<!-- Apple -->
<meta name="apple-mobile-web-app-title" content="简书">
<title>ADADACHAN - 简书</title>
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="XXXXXX />
<!--<script data-ad-client="ca-pub-3077285224019295" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>-->
<link rel="stylesheet" media="all" href="https://cdn2.jianshu.io/assets/web-9af87d737cccdeba08d6.css" />
<link rel="stylesheet" media="all" href="https://cdn2.jianshu.io/assets/web/pages/users/show/entry-66c9a2b224e4181af887.css" />
<link href="https://cdn2.jianshu.io/assets/favicons/favicon-e743bfb1821442341c3ab15bdbe804f7ad97676bd07a770ccc9483473aa76f06.ico" rel="shortcut icon" type="image/x-icon">
<link rel="apple-touch-icon-precomposed" href="https://cdn2.jianshu.io/assets/apple-touch-icons/57-a6f1f1ee62ace44f6dc2f6a08575abd3c3b163288881c78dd8d75247682a4b27.png" sizes="57x57" />
<link rel="apple-touch-icon-precomposed" href="https://cdn2.jianshu.io/assets/apple-touch-icons/72-fb9834bcfce738fd7b9c5e31363e79443e09a81a8e931170b58bc815387c1562.png" sizes="72x72" />
<link rel="apple-touch-icon-precomposed" href="https://cdn2.jianshu.io/assets/apple-touch-icons/76-49d88e539ff2489475d603994988d871219141ecaa0b1a7a9a1914f4fe3182d6.png" sizes="76x76" />
<link rel="apple-touch-icon-precomposed" href="https://cdn2.jianshu.io/assets/apple-touch-icons/114-24252fe693524ed3a9d0905e49bff3cbd0228f25a320aa09053c2ebb4955de97.png" sizes="114x114" />
<link rel="apple-touch-icon-precomposed" href="https://cdn2.jianshu.io/assets/apple-touch-icons/120-1bb7371f5e87f93ce780a5f1a05ff1b176828ee0d1d130e768575918a2e05834.png" sizes="120x120" />
<link rel="apple-touch-icon-precomposed" href="https://cdn2.jianshu.io/assets/apple-touch-icons/152-bf209460fc1c17bfd3e2b84c8e758bc11ca3e570fd411c3bbd84149b97453b99.png" sizes="152x152" />
<!-- Start of 访问统计 -->
<script>
var _hmt = _hmt || [];
(function() {
var hm = document.createElement("script");
hm.src = "//hm.baidu.com/hm.js?0c0e9d9b1e7d617b3e6842e85b9fb068";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(hm, s);
})();
(function () {
var hm = document.createElement('script');
hm.src = 'https://v1.cnzz.com/z_stat.php?id=xxxx&web_id=xxx';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(hm, s);
}());
</script>
<!-- End of 访问统计 -->
</head>
<!-- 只给10%的用户添加代码 -->
<!-- ###第四范式-智能推荐:代码直接复制 无需修改参数### -->
<!-- ###功能:上报内容并反馈用户行为### -->
<!--
-->
<body lang="zh-CN" class="reader-black-font">
<!-- 全局顶部导航栏 -->
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="width-limit">
<!-- 左上方 Logo -->
<a class="logo" href="/"><img src="https://cdn2.jianshu.io/assets/web/nav-logo-4c7bbafe27adc892f3046e6978459bac.png" alt="Nav logo" /></a>
<!-- 右上角 -->
<!-- 未登录显示登录/注册/写文章 -->
<a class="btn write-btn" target="_blank" href="/writer#/">
<i class="iconfont ic-write"></i>写文章
</a> <a class="btn sign-up" id="sign_up" href="/sign_up">注册</a>
<a class="btn log-in" id="sign_in" href="/sign_in">登录</a>
<!-- 如果用户登录,显示下拉菜单 -->
<div id="view-mode-ctrl">
</div>
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#menu" aria-expanded="false">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="menu">
<ul class="nav navbar-nav">
<li class="tab ">
<a href="/">
<span class="menu-text">首页</span><i class="iconfont ic-navigation-discover menu-icon"></i>
</a> </li>
<li class="tab ">
<a id="web-nav-app-download-btn" class="app-download-btn" href="/apps?utm_medium=desktop&utm_source=navbar-apps"><span class="menu-text">下载App</span><i class="iconfont ic-navigation-download menu-icon"></i></a>
</li>
<li onclick="addPoint(event)" class="tab ">
<a href="/techareas">
<span class="menu-text">IT技术</span><i style="transform:scale(1.3)" class="iconfont ic-chengxuyuanzhuanqu menu-icon"></i>
</a> </li>
<li class="search">
<form target="_blank" action="/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓" />
<input type="text" name="q" id="q" value="" autocomplete="off" placeholder="搜索" class="search-input" />
<a class="search-btn" href="javascript:void(null)"><i class="iconfont ic-search"></i></a>
</form> </li>
</ul>
</div>
</div>
</div>
</nav>
<script type="text/javascript">
function addPoint (e) {
e.stopPropagation();
JsSensor.trackEvent(SAEVENTS.PC_HEADER_TAB_CLICK,{tab:'程序员专区',place:'首页'});
}
</script>
<div class="container person">
<div class="row">
<div class="col-xs-16 main">
<div class="main-top">
<a class="avatar" href="/u/0e95708b1552">
<img src="https://upload.jianshu.io/users/upload_avatars/16302180/8b41ff59-2a25-4fec-8f74-2f5966a0252e.png?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240" alt="240" />
</a>
<div class="follow-button" props-data-user-id="16302180" props-data-state="0"></div>
<a class="btn btn-hollow" href="/notifications#/chats/new?mail_to=16302180">发简信</a>
<div class="title">
<a class="name" href="/u/0e95708b1552">ADADACHAN</a>
</div>
<div class="info">
<ul>
<li>
<div class="meta-block">
<a href="/users/0e95708b1552/following">
<p>3</p>
关注 <i class="iconfont ic-arrow"></i>
</a> </div>
</li>
<li>
<div class="meta-block">
<a href="/users/0e95708b1552/followers">
<p>1</p>
粉丝 <i class="iconfont ic-arrow"></i>
</a> </div>
</li>
<li>
<div class="meta-block">
<a href="/u/0e95708b1552">
<p>34</p>
文章 <i class="iconfont ic-arrow"></i>
</a> </div>
</li>
<li>
<div class="meta-block">
<p>36615</p>
<div>字数</div>
</div>
</li>
<li>
<div class="meta-block">
<p>31</p>
<div>收获喜欢</div>
</div>
</li>
<li>
<div class="meta-block">
<p>7</p>
<div>总资产</div>
</div>
</li>
</ul>
</div>
</div>
<ul class="trigger-menu" data-pjax-container="#list-container"><li class="active"><a href="/u/0e95708b1552?order_by=shared_at"><i class="iconfont ic-articles"></i> 文章</a></li><li class=""><a href="/users/0e95708b1552/timeline"><i class="iconfont ic-feed"></i> 动态</a></li><li class=""><a href="/u/0e95708b1552?order_by=commented_at"><i class="iconfont ic-latestcomments"></i> 最新评论</a></li><li class=""><a href="/u/0e95708b1552?order_by=top"><i class="iconfont ic-hot"></i> 热门</a></li></ul>
<div id="list-container">
<ul class="note-list" infinite-scroll-url="/u/0e95708b1552?order_by=shared_at">
<li id="note-91967359" data-note-id="91967359" class="have-img">
<a class="wrap-img" href="/p/b6a8b3cf66a1" target="_blank">
<img data-echo="https://img.haomeiwen.com/i16302180/68cba96eabec899c.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/300/h/240" class="img-blur" src="https://img.haomeiwen.com/i16302180/68cba96eabec899c.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/150/h/120" alt="120" />
</a>
<div class="content ">
<a class="title" target="_blank" href="/p/b6a8b3cf66a1">跳跳蛙早上好</a>
<p class="abstract">
1.看到跳跳蛙,心情就美丽 2.梦境和昨天看的电影基本一样,看来电影要多看才对,不是什么美梦,是做有故事情节的梦,有点再看一遍电影的感觉,是四维...
</p>
<div class="meta">
<a target="_blank" href="/p/b6a8b3cf66a1">
<i class="iconfont ic-list-read"></i> 15
</a> <a target="_blank" href="/p/b6a8b3cf66a1#comments">
<i class="iconfont ic-list-comments"></i> 0
</a> <span><i class="iconfont ic-list-like"></i> 1</span>
<span class="time" data-shared-at="2021-08-23T08:03:08+08:00"></span>
</div>
</div>
</li>
<li id="note-91928236" data-note-id="91928236" class="have-img">
<a class="wrap-img" href="/p/ddf209dee04a" target="_blank">
<img data-echo="https://img.haomeiwen.com/i16302180/ab51f32761392f7d.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/300/h/240" class="img-blur" src="https://img.haomeiwen.com/i16302180/ab51f32761392f7d.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/150/h/120" alt="120" />
</a>
<div class="content ">
<a class="title" target="_blank" href="/p/ddf209dee04a">IDE移动硬盘</a>
<p class="abstract">
1.从北京幸幸苦苦背下来的移动硬盘,有3块,2个是老式硬盘,都是80g的,这个小的,应该里面有源码,需要找到旧式移动硬盘盒纸。 2.昨天的十公里...
</p>
<div class="meta">
<a target="_blank" href="/p/ddf209dee04a">
<i class="iconfont ic-list-read"></i> 15
</a> <a target="_blank" href="/p/ddf209dee04a#comments">
<i class="iconfont ic-list-comments"></i> 0
</a> <span><i class="iconfont ic-list-like"></i> 0</span>
<span class="time" data-shared-at="2021-08-22T07:51:41+08:00"></span>
</div>
</div>
</li>
<div aria-label="3rd-ad">
<script type="text/javascript" smua="d=p&s=b&u=u3179110&w=625&h=140" src="https://www.nkscdn.com/smu/o.js"></script>
<script type="text/javascript">
setTimeout(function(){
if(window.JsSensor){
JsSensor.trackEvent(SAEVENTS.PC_AD_SHOW, {
page: '他人主页',
place: '信息流广告'+ 1,
uid: 'u3179110'
});
}
},1500)
</script>
</div>
<li id="note-91891317" data-note-id="91891317" class="have-img">
<a class="wrap-img" href="/p/98180f2757c9" target="_blank">
<img data-echo="https://img.haomeiwen.com/i16302180/6101fb0c7f420913.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/300/h/240" class="img-blur" src="https://img.haomeiwen.com/i16302180/6101fb0c7f420913.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/150/h/120" alt="120" />
</a>
<div class="content ">
<a class="title" target="_blank" href="/p/98180f2757c9">快9月,改变从头开始创新</a>
<p class="abstract">
1.今天体力不支,跑10公里,结果是走了快5公里,要有好身体,首先是不可以感冒。最近感冒快一整天,吃了一点药,大家都知道,生病体能会下降的,想想...
</p>
<div class="meta">
<a target="_blank" href="/p/98180f2757c9">
<i class="iconfont ic-list-read"></i> 24
</a> <a target="_blank" href="/p/98180f2757c9#comments">
<i class="iconfont ic-list-comments"></i> 0
</a> <span><i class="iconfont ic-list-like"></i> 0</span>
<span class="time" data-shared-at="2021-08-21T09:42:01+08:00"></span>
</div>
</div>
</li>
<li id="note-91847660" data-note-id="91847660" class="have-img">
<a class="wrap-img" href="/p/00316a2b2722" target="_blank">
<img data-echo="https://img.haomeiwen.com/i16302180/75803db38ba9da16.png?imageMogr2/auto-orient/strip|imageView2/1/w/300/h/240" class="img-blur" src="https://img.haomeiwen.com/i16302180/75803db38ba9da16.png?imageMogr2/auto-orient/strip|imageView2/1/w/150/h/120" alt="120" />
</a>
<div class="content ">
<a class="title" target="_blank" href="/p/00316a2b2722">意外,程序员是农民工</a>
<p class="abstract">
1.北京这个城市,程序员就是农民工,一份工作,拆分的特别细来执行,明明可以一个人干完的,不用,非的拆分一堆细细的螺丝钉来做,美其名曰是精致,其实...
</p>
<div class="meta">
<span class="jsd-meta">
<i class="iconfont ic-paid1"></i> 0.2
</span>
<a target="_blank" href="/p/00316a2b2722">
<i class="iconfont ic-list-read"></i> 21
</a> <a target="_blank" href="/p/00316a2b2722#comments">
<i class="iconfont ic-list-comments"></i> 0
</a> <span><i class="iconfont ic-list-like"></i> 1</span>
<span class="time" data-shared-at="2021-08-20T07:36:21+08:00"></span>
</div>
</div>
</li>
<li id="note-91804918" data-note-id="91804918" class="have-img">
<a class="wrap-img" href="/p/18445f1a5e97" target="_blank">
<img data-echo="https://img.haomeiwen.com/i16302180/a579087a26c2f3cb.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/300/h/240" class="img-blur" src="https://img.haomeiwen.com/i16302180/a579087a26c2f3cb.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/150/h/120" alt="120" />
</a>
<div class="content ">
<a class="title" target="_blank" href="/p/18445f1a5e97">一天从瑜伽开始</a>
<p class="abstract">
1.一起来先喝杯水,根据昨天是否上火,和温水还是凉水,如何上火,直接来杯凉水,一杯直接喝不用分多次,如果有口疮,可以加点盐巴漱口,不喝 温水基本...
</p>
<div class="meta">
<span class="jsd-meta">
<i class="iconfont ic-paid1"></i> 0.2
</span>
<a target="_blank" href="/p/18445f1a5e97">
<i class="iconfont ic-list-read"></i> 16
</a> <a target="_blank" href="/p/18445f1a5e97#comments">
<i class="iconfont ic-list-comments"></i> 1
</a> <span><i class="iconfont ic-list-like"></i> 1</span>
<span class="time" data-shared-at="2021-08-19T07:44:16+08:00"></span>
</div>
</div>
</li>
<li id="note-91762635" data-note-id="91762635" class="have-img">
<a class="wrap-img" href="/p/812cb4a06bce" target="_blank">
<img data-echo="https://img.haomeiwen.com/i16302180/1d10ca0952d07086.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/300/h/240" class="img-blur" src="https://img.haomeiwen.com/i16302180/1d10ca0952d07086.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/150/h/120" alt="120" />
</a>
<div class="content ">
<a class="title" target="_blank" href="/p/812cb4a06bce">梦空间</a>
<p class="abstract">
晚上喝了一点酒,不多一杯,主要是帮助睡眠,结果是适得其反,反而睡不好。 先吃个早饭,简简单单的 梦空间是什么?我就是在进行建筑,感觉在设计什么?...
</p>
<div class="meta">
<span class="jsd-meta">
<i class="iconfont ic-paid1"></i> 0.2
</span>
<a target="_blank" href="/p/812cb4a06bce">
<i class="iconfont ic-list-read"></i> 29
</a> <a target="_blank" href="/p/812cb4a06bce#comments">
<i class="iconfont ic-list-comments"></i> 1
</a> <span><i class="iconfont ic-list-like"></i> 1</span>
<span class="time" data-shared-at="2021-08-18T08:29:18+08:00"></span>
</div>
</div>
</li>
<li id="note-91735411" data-note-id="91735411" class="">
<div class="content ">
<a class="title" target="_blank" href="/p/283d9f265e77">使用 Pytest 进行有效的 Python 测试</a>
<p class="abstract">
使用 Pytest 进行有效的 Python 测试 测试您的代码会带来各种各样的好处。它增加了您对代码按预期运行的信心,并确保对代码的更改不会导...
</p>
<div class="meta">
<span class="jsd-meta">
<i class="iconfont ic-paid1"></i> 0.2
</span>
<a target="_blank" href="/p/283d9f265e77">
<i class="iconfont ic-list-read"></i> 15
</a> <a target="_blank" href="/p/283d9f265e77#comments">
<i class="iconfont ic-list-comments"></i> 1
</a> <span><i class="iconfont ic-list-like"></i> 1</span>
<span class="time" data-shared-at="2021-08-17T17:29:42+08:00"></span>
</div>
</div>
</li>
<div aria-label="3rd-ad">
<script type="text/javascript" smua="d=p&s=b&u=u3179110&w=625&h=140" src="https://www.nkscdn.com/smu/o.js"></script>
<script type="text/javascript">
setTimeout(function(){
if(window.JsSensor){
JsSensor.trackEvent(SAEVENTS.PC_AD_SHOW, {
page: '他人主页',
place: '信息流广告'+ 2,
uid: 'u3179110'
});
}
},1500)
</script>
</div>
<li id="note-91719158" data-note-id="91719158" class="have-img">
<a class="wrap-img" href="/p/1a654412bd76" target="_blank">
<img data-echo="https://img.haomeiwen.com/i16302180/27b5d38732a90443.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/300/h/240" class="img-blur" src="https://img.haomeiwen.com/i16302180/27b5d38732a90443.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/150/h/120" alt="120" />
</a>
<div class="content ">
<a class="title" target="_blank" href="/p/1a654412bd76">简单的一天从抓bug开始</a>
<p class="abstract">
1.早上起来看到一只小强 这种小强应该在北方才对,南方应该比这个更大只才对,拍完这个都没有胃口吃饭了,就当作减肥吧。 2.早起清单的一碗绿豆粥开...
</p>
<div class="meta">
<span class="jsd-meta">
<i class="iconfont ic-paid1"></i> 0.2
</span>
<a target="_blank" href="/p/1a654412bd76">
<i class="iconfont ic-list-read"></i> 14
</a> <a target="_blank" href="/p/1a654412bd76#comments">
<i class="iconfont ic-list-comments"></i> 0
</a> <span><i class="iconfont ic-list-like"></i> 1</span>
<span class="time" data-shared-at="2021-08-17T08:05:13+08:00"></span>
</div>
</div>
</li>
<li id="note-91680874" data-note-id="91680874" class="">
<div class="content ">
<a class="title" target="_blank" href="/p/a54134e3a67f">为什么要构架师?</a>
<p class="abstract">
为什么要构架师? 1.企业发展的阶段,需要给出企业的构架未来的设计和发展方向定义和规划,简单讲就是国家的5年计划设计师 那么企业中的构架师,当然...
</p>
<div class="meta">
<a target="_blank" href="/p/a54134e3a67f">
<i class="iconfont ic-list-read"></i> 14
</a> <a target="_blank" href="/p/a54134e3a67f#comments">
<i class="iconfont ic-list-comments"></i> 0
</a> <span><i class="iconfont ic-list-like"></i> 0</span>
<span class="time" data-shared-at="2021-08-16T09:53:49+08:00"></span>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="col-xs-7 col-xs-offset-1 aside">
<div class="title">个人介绍</div>
<div class="description">
<div class="js-intro">Technology is endless, life is endless</div>
<a class="social-icon-sprite social-icon-index" target="_blank" href="https://links.jianshu.com/go?to=https://ai-keny.blog.csdn.net/"></a>
</div>
<!-- 广告 -->
<div data-vcomp="third-party-ad" props-data-page="他人主页" props-data-place="侧边栏上方广告" props-data-smua="u2823523" props-data-script-url="https://www.nkscdn.com/smu/o.js" props-data-w="280" props-data-h="280"></div>
<div class="publication-list"></div>
<div class="course-list"></div>
<ul class="list user-dynamic">
<li>
<a href="/users/0e95708b1552/subscriptions">
<i class="iconfont ic-collection"></i> <span>他关注的专题/文集/连载</span>
</a> </li>
<li>
<a href="/users/0e95708b1552/liked_notes">
<i class="iconfont ic-like"></i> <span>他喜欢的文章</span>
</a> </li>
</ul>
<!-- 专题和文集 -->
<div class="js-collection-and-notebook-container"></div>
<!-- 广告 -->
<div data-vcomp="third-party-ad" props-data-page="他人主页" props-data-place="侧边栏下方广告" props-data-smua="u2823523" props-data-script-url="https://www.nkscdn.com/smu/o.js" props-data-w="280" props-data-h="280"></div>
</div>
</div>
</div>
<div data-vcomp="side-tool"></div>
<script type="application/json" data-name="page-data">{"user_signed_in":false,"locale":"zh-CN","os":"other","read_mode":"day","read_font":"font2","user":{"slug":"0e95708b1552","gender":3},"has_collections":true}</script>
<script src="https://cdn2.jianshu.io/assets/babel-polyfill-82fc29a99e639a538b4a.js" crossorigin="anonymous"></script>
<script src="https://cdn2.jianshu.io/assets/web-base-2dd3274e8bc7d15c7f0e.js" crossorigin="anonymous"></script>
<script src="https://cdn2.jianshu.io/assets/web-a63d67f70a380e39f23d.js" crossorigin="anonymous"></script>
<script src="https://cdn2.jianshu.io/assets/web/pages/users/show/entry-5c0c068643e4f62dc2ab.js" crossorigin="anonymous"></script>
</body>
</html>
Process finished with the exit code 0
可以看出来,<html></html>里面就是我首页的内容,内容的主要id,我屏蔽了,感兴趣的同学,可以直接抓一下。
2.异步请求
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"regexp"
"sync"
)
func main() {
urls := []string{
"http://webcode.me",
"https://example.com",
"http://httpbin.org",
"https://www.perl.org",
"https://www.php.net",
"https://www.python.org",
"https://code.visualstudio.com",
"https://clojure.org",
"https://www.baidu.com",
}
var wgsync.WaitGroup
for _, u :=range urls {
wg.Add(1)
go func(urlstring) {
defer wg.Done()
content :=doReq(url)
title :=getTitle(content)
fmt.Println(title)
}(u)
}
wg.Wait()
}
func doReq(urlstring) (contentstring) {
resp, err :=http.Get(url)
defer resp.Body.Close()
body, err :=ioutil.ReadAll(resp.Body)
if err !=nil {
log.Fatal(err)
}
return string(body)
}
func getTitle(contentstring) (titlestring) {
re :=regexp.MustCompile("<title>(.*)</title>")
parts := re.FindStringSubmatch(content)
if len(parts) >0 {
return parts[1]
}else {
return "no title"
}
}
我们发出多个异步 HTTP 请求。我们得到每个网页的标题标签的内容。
The Perl Programming Language - www.perl.org
My html page
httpbin.org
Clojure
Example Domain
PHP: Hypertext Preprocessor
Welcome to Python.org
Visual Studio Code - Code Editing. Redefined
百度一下,你就知道
3.带有查询参数的 GET 请求
package main
import (
"fmt"
"io/ioutil"
"log"
"net/http"
"net/url"
)
func main() {
name :="kenychen"
occupation :="gardener"
params :="name=" +url.QueryEscape(name) +"&" +
"occupation=" +url.QueryEscape(occupation)
path :=fmt.Sprintf("https://httpbin.org/get?%s", params)
resp, err :=http.Get(path)
if err !=nil {
log.Fatal(err)
}
defer resp.Body.Close()
body, err :=ioutil.ReadAll(resp.Body)
if err !=nil {
log.Fatal(err)
}
fmt.Println(string(body))
}
运行结果
{
"args": {
"name": "kenychen",
"occupation": "gardener"
},
"headers": {
"Accept-Encoding": "gzip",
"Host": "httpbin.org",
"User-Agent": "Go-http-client/2.0",
"X-Amzn-Trace-Id": "Root=1-6123339d-1c30bc7a15b0f90200337e4a"
},
"origin": "20.44.231.34",
"url": "https://httpbin.org/get?name=kenychen&occupation=gardener"
}
Go HTTP POST 请求 FORM 数据
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
"net/url"
)
func main() {
data :=url.Values{
"name": {"kenychen"},
"occupation": {"gardener"},
}
resp, err :=http.PostForm("https://httpbin.org/post", data)
if err !=nil {
log.Fatal(err)
}
var resmap[string]interface{}
json.NewDecoder(resp.Body).Decode(&res)
fmt.Println(res["form"])
}
运行效果:
"D:\Program Files\Go\bin\go.exe" build -o C:\Users\Dev\AppData\Local\Temp\GoLand\___go_build_post_req_form_go.exe D:\gowork\beegoDemo\src\main\post_req_form.go #gosetup
C:\Users\Dev\AppData\Local\Temp\GoLand\___go_build_post_req_form_go.exe #gosetup
map[name:kenychen occupation:gardener]
Go HTTP POST request JSON data
import (
"bytes"
"encoding/json"
"fmt"
"log"
"net/http"
)
func main() {
values := map[string]string{"name": "kenychen", "occupation": "gardener"}
json_data, err := json.Marshal(values)
if err != nil {
log.Fatal(err)
}
resp, err := http.Post("https://httpbin.org/post", "application/json",
bytes.NewBuffer(json_data))
if err != nil {
log.Fatal(err)
}
var res map[string]interface{}
json.NewDecoder(resp.Body).Decode(&res)
fmt.Println(res["json"])
}
网友评论