当前位置: 首页 > 编程日记 > 正文

go 网络请求篇

---恢复内容开始---

今天特意找了下go的网络请求篇,get请求是ok的,post请求一直不下来,搜索了下,代码都差不多,无法拿到post数据,先整理一篇,亲测可用。

针对post ,先来说下post 四种提交数据方式(Content-Type)  链接

  • application/x-www-form-urlencoded      key1=val1&key2=val2       PHP 中,$_POST['title'] 可以获取到 title 的值,$_POST['sub'] 可以得到 sub 数组。
  • multipart/form-data     文件上传
  • application/json    在请求头中 Content-Type 为 application/json 时,从 php://input 里获得原始输入流

  • text/xml       不熟悉

我当时测试的为php接口,然后content-type 写成了 application/json,然后怎么post都是拿到的域名的html页面代码。以下为测试通过代码

1、get请求

 1 package main
 2 
 3 import (
 4     "bytes"
 5     "fmt"
 6     "log"
 7     "net/http"
 8     "reflect"
 9 )
10 
11 func main() {
12 
13     url := "http://api.budejie.com/api/api_open.php?a=list&appname=baisibudejie_hd&asid=C1180CB8-F460-4385-A77C-97CD1AA83DFD&c=data&client=ipad&device=ios%20%E8%AE%BE%E5%A4%87&from=ios&jbk=0&mac=02:00:00:00:00:00&market=&maxtime=&openudid=78336166d6a434b4cf1634410eb3b692d6d3a4ee&order=ctime&page=1&per=20000&systemversion=7.1&type=10&ver=2.0.3"
14 
15     resp, err := http.Get(url)
16 
17     if err != nil {
18         // 错误处理
19         log.Println(err)
20         return
21     }
22 
23     defer resp.Body.Close() //关闭链接
24 
25     fmt.Printf("resp status %s,statusCode %d\n", resp.Status, resp.StatusCode)
26 
27     fmt.Printf("resp Proto %s\n", resp.Proto)
28 
29     fmt.Printf("resp content length %d\n", resp.ContentLength)
30 
31     fmt.Printf("resp transfer encoding %v\n", resp.TransferEncoding)
32 
33     fmt.Printf("resp Uncompressed %t\n", resp.Uncompressed)
34 
35     fmt.Println(reflect.TypeOf(resp.Body))
36     buf := bytes.NewBuffer(make([]byte, 0, 512))
37     length, _ := buf.ReadFrom(resp.Body)
38     fmt.Println(len(buf.Bytes()))
39     fmt.Println(length)
40     fmt.Println(string(buf.Bytes()))
41 }

2、post请求

package mainimport ("bytes""fmt""io/ioutil""net/http""net/url""time"
)func main() {url := "http://api.budejie.com/api/api_open.php"var data map[string]string /*创建集合 */data = make(map[string]string)data["a"] = "list"data["appname"] = "baisibudejie_hd"data["asid"] = "C1180CB8-F460-4385-A77C-97CD1AA83DFD"data["c"] = "data"data["client"] = "ipad"data["device"] = "ios"data["from"] = "ios"data["jbk"] = "0"data["mac"] = "02:00:00:00:00:00"data["openudid"] = "78336166d6a434b4cf1634410eb3b692d6d3a4ee"data["order"] = "ctime"data["page"] = "1"data["per"] = "20"data["systemversion"] = "7.1"data["type"] = "10"data["ver"] = "2.0.3"data["market"] = ""data["maxtime"] = ""contentType := "application/x-www-form-urlencoded"json := Post(url, data, contentType)fmt.Println(json)}//发送POST请求
//url:请求地址,data:POST请求提交的数据,contentType:请求体格式,如:application/json
//content:请求放回的内容
func Post(urlStr string, data map[string]string, contentType string) (content string) {postValues := url.Values{}for postKey, PostValue := range data {postValues.Set(postKey, PostValue)}postDataStr := postValues.Encode()postDataBytes := []byte(postDataStr)postBytesReader := bytes.NewReader(postDataBytes)req, err := http.NewRequest("POST", urlStr, postBytesReader)req.Header.Add("content-type", contentType)if err != nil {panic(err)}defer req.Body.Close()client := &http.Client{Timeout: 5 * time.Second}resp, error := client.Do(req)if error != nil {panic(error)}defer resp.Body.Close()result, _ := ioutil.ReadAll(resp.Body)content = string(result)return
}


---恢复内容结束---

转载于:https://www.cnblogs.com/lpwlpw/p/9967093.html

相关文章:

jQuery添加DOM节点常用的5种方法

一、内部插入&#xff08;前插入、后插入&#xff09;&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>jQuery添加DOM节点常用的五种方法</title><script type"text/javascript" src"…

未能从程序集 XX加载类型XXX的错误解决方法(借以提醒NHibernate使用者)

这是写.hbm.xml文件最容易犯的错误之一首先,Class的Name属性必须是"完全限定类名,程序集名"这里,例如<class name"ibiz.core.domain.product,ibiz.core">很多人在这里写成"product"或者"product,ibiz.core",这样,没有写上namesp…

正则最常用到的东西

一种组合方式: (.*?)匹配除换行符以外任意字符,匹配模式加上re.S,则开启无敌模式,匹配一切.需要的内容放在括号里面. 两个方法: re.searchgroup()可以找到第几个括号的东西,在确定只有一个内容时,使用re.search会提高效率, 因为re.search找到第一个就不会去找了,而findall会遍…

2005年你看过的,认为比较好的书,请大家一起来评评

我今年看过的书:设计模式 第三遍了..呵呵..有时候莫名其妙的拿到书就很兴奋..充满魔力的书...敏捷软件开发&#xff1a;原则、模式与实践 第二遍了..和第一本一样..同样充满着魔力..Java编程思想 (第二版) 看第二遍了,主要是补充一下以前看不懂的,或者忽略过的技术..比如垃…

从今天开始收集一些经典的算法。

一。用过excel的都知道excel的列编号是这样的&#xff1a; a b c .... z aa ab ac .... az ba bb bc .... yz za zb zc .... zz aaa aab aac .... 分别代表以下编号&#xff1a; 1 2 3 .... 26 27 28 29 .... 52 53 54 55 .... 676 677 678 679 .... 702 703 704 705 .... 请写…

ros ddns

ROS5X-6X脚本&#xff08;10-15分钟执行一次&#xff09;#DDNS本站帐号:global ddnsuser "用户名" #DDNS本站密码:global ddnspass "密码"#ROS系统版本&#xff08;5X,6X&#xff09;:global rver "5X"#DDNS域名(本站添加的子域名):global zho…

apicloud 基础

时间成本 人力成本 很多人想开发app 又碍于时间和金钱成本 。 本色对app 要求不高的话。 混合app 开发是一种很好的方式。 apicloud 就是一种很好的方式。 apicloud 配合aui 和vue 既节省时间 又加大了开发效率。不失为创业公司的选择。 对前端来讲 你需要的学习有几个方…

jQuery中的页面载入($()、ready(fn)、onload)

用jQuery进行页面载入时有集中方式&#xff0c;我们通过例子来说明一下&#xff1a; 第一种&#xff08;通过window.onload()&#xff09;&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><…

性能,安全,集成才是web之道

年底了,又是一年过去了.今年感觉收获颇多..做web开发将近4年时光,期间没有做过任何完整的winApp,一直从事者网络开发.从最初的留言本--新闻--企业网站--论坛--聊天室--大型门户网站--大流量下载网站--网站系统优化,一路走来,不仅仅是技术上的进步,更重要的是思想上的成熟..今天…

站立会议第四天

今天是我们冲刺周期第四天&#xff0c;今天的站立会议主要有以下内容&#xff1a; 1.完成录入菜的数量函数的编写&#xff08;gersort&#xff09; 部分代码如下&#xff1a; void Cmenu::getsort(int SORT) // 录入所点菜的数量 { sortSORT; } cout<<"…

iOS 后台挂起的一些坑

特别说明&#xff1a;后台状态&#xff1a;当前app如果不是作为屏幕中的第一层&#xff0c;呈现显示给用户&#xff0c;那么此时app就是后台状态。锁屏&#xff08;包括&#xff1a;当前应用下锁屏、其他应用下锁屏、桌面锁屏&#xff09; 用户在使用其他应用app2&#xff0c;…

jQuery绑定事件的三种常见方式(bind、one、【change、click、keydown、hover】)

一、bind(type,[data],fn)&#xff1a;为每个匹配元素的特定事件绑定对应的事件处理函数。 也可以同时给一个元素绑定多个事件&#xff0c;我们来看一下例子&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>…

Visual Web Development 2005开发ASP.NET使用小技巧

&#xff08;1&#xff09;改变端口 VWD2005自带有一个内置的web服务器&#xff0c;当我们使用它进行开发ASP.NET时&#xff0c;可以发现它默认使用的端口是动态改变的&#xff0c;要想使用固定端口&#xff0c;步骤如下1&#xff09;在“解决方案资源管理器”里选择你的应用…

java 日志框架的选择Log4j-SLF4j-Logback

Log4j->SLF4j->Logback是同一个人开发的 import lombok.extern.slf4j.Slf4j; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;R…

[WCF] - Odata Service 访问失败,查看具体错误信息的方法

Issue 解决 为 Data Service 配置属性如下&#xff1a;[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults true)]参考 http://salvoz.com/blog/2011/02/18/where-are-the-server-logs/转载于:https://www.cnblogs.com/jinzesudawei/p/7087893.html

Tomcat软件的目录结构、作用

要了解Tomcat的目录结构&#xff0c;首先要知道什么是Tomcat&#xff1f; Tomcat是一个Apache软件基金会Jakarta项目中的核心项目&#xff1b;是一个免费的开放源代码的轻量级Web应用服务器&#xff1b;运行时占用资源小&#xff0c;支持负载均衡与邮件服务等开发应用系统常用功…

这两者需要映射到相同的服务器,从而无法打开项目的解决方法:

1、首先选择文件夹&#xff0c;右键选择共享与安全中的常规&#xff0c;确保其属性是只读&#xff0c;如果还是不能打开项目。则进入第二步。2、到“C:\Documents and Settings\你的用户名\VSWebCache\计算机名\”中, 删除与该项目同名的文件夹。如果还是不行&#xff0c;则进入…

python学习07

Python_learn_day07 1.模块 2.正则表达式 转义字符&#xff1a;反斜杠&#xff08;\&#xff09;&#xff0c;可以把元字符转义为普通字符。 注意&#xff1a;经常用到的正则表达式最好将其编译&#xff0c;因为编译后的文件运行更快。 利用re中的split()方法拆分复杂的字符串&…

一些零碎知识(域名、DNS、浏览器、动态静态页面、web应用系统工作原理)

域名&#xff1a; http://localhost:8080/practice&#xff08;胡写的&#xff0c;用于说明问题&#xff09; http&#xff1a;表明当前请求是http协议&#xff0c;所有的Java Web应用程序都是基于HTTP协议&#xff0c;HTTP全称HyperText Transfer Protocol&#xff0c;意思是…

mybatis简化实现思路

要想实现一个简化的mybatis&#xff0c;主要1.读jdbc配置和mapper.xml 2.jdbc转载于:https://www.cnblogs.com/ljjnbpy/p/9981219.html

76种语言:我爱你

法语&#xff1a;Je taime,Je tadore 德语&#xff1a;Ich liebe Dich 希腊语&#xff1a;Sagapo 犹太语&#xff1a;Ani ohev otach(male or famale),Ani ohevet otcha (male orfamale) 匈牙利&#xff1a;Szeretlek 爱尔兰&#xff1a;taim ingra leat 爱沙尼亚&#xff1a;M…

搜索引擎的实现原理

搜索引擎的实现原理&#xff0c;可以看作四步&#xff1a;从互联网上抓取网页→建立索引数据库→在索引数据库中搜索→对搜索结果进行处理和排序。 从互联网上抓取网页. 利用能够从互联网上自动收集网页的网络蜘蛛程序&#xff0c;自动访问互联网&#xff0c;并沿着任何网页中的…

精通JavaScript--07设计模式:行为型

在本章&#xff0c;我们将继续学习设计模式&#xff0c;着重了解行为型设计模式。我们在第5章所学的创建型设计模式侧重于对象的创建&#xff0c;在第6章所学的结构型设计模式侧重于对象结构&#xff0c;而本章介绍的行为型设计模式则侧重于辅助实现代码库中的多个对象之间的通…

DataX 安装和使用

阿里云介绍&#xff1a; 1. 下载安装包。作为阿里主要的数据传输工具Datax&#xff0c;阿里已经完全开源到github上面了。下载地址&#xff08;https://github.com/alibaba/DataX&#xff09;。 2. 安装环境&#xff1a; JDK(1.6以上&#xff0c;推荐1.6)Python(推荐Python2.6.…

关于Adodb.Stream的使用说明

组件&#xff1a;"Adodb.Stream"有下列方法&#xff1a;Cancel 方法 使用方法如下 Object.Cancel 说明&#xff1a;取消执行挂起的异步 Execute 或 Open 方法的调用。Close 方法 使用方法如下 Object.Close &#xff1a;关闭对像CopyTo 方法…

JSP的执行过程(详解)

要了解JSP的执行过程&#xff0c;首要要搞懂什么是JSP&#xff0c;JSP的全称是Java Server Pages,里面包含html标签、css样式、JavaScript脚本和Java代码。 下面我们来说说JSP的执行过程&#xff1a; JSP执行过程&#xff1a; 当用户通过浏览器访问Tomcat上的JSP页面时&#…

VoIP败家子的游戏

现在VoIP比较火&#xff0c;甚至都引起了电信运营商的强烈关注。VoIP替代长途好象是板上钉钉的事情。实际情况是否如此呢&#xff1f;当然不一定是这样的。VoIP是将企业语音电话业务与网络数据业务合二为一&#xff0c;使之能够在一个网络上实现低成本的IP语音和IP数据服务。其…

K8s简单yaml文件运行例子deployment

kubectl run 创建并运行一个或多个容器镜像。创建一个deployment 或job 来管理容器。kubectl run 语法&#xff1a; $ run NAME --imageimage [--env"keyvalue"] [--portport] [--replicasreplicas] [--dry-runbool] [--overridesinline-json] [--command] -- [COMMA…

codeforces round 421 div2 补题 CF 820 A-E

A Mister B and Book Reading O(n)暴力即可 #include<bits/stdc.h> using namespace std; typedef long long int LL; const LL N1,M1,MOD1;int main() {//freopen("t.txt","r",stdin);int c,v0,v1,a,l;scanf("%d%d%d%d%d",&c,&…

JSP中的重定向和请求转发以及它们的区别

我们先硬着头皮看一下重定向的定义&#xff1a; 重定向&#xff08;Redirect&#xff09;&#xff1a; 客户端浏览器向Web应用服务器端发送一个请求&#xff0c;Web服务器端使用HttpServletResponse的sendRedirect()方法将结果&#xff08;结果中头信息内HTTP状态码为302&…