Go語(yǔ)言解析表單form里提交的值以及錯(cuò)誤處理-創(chuàng)新互聯(lián)

在Web開發(fā)中,數(shù)據(jù)的獲取很多時(shí)候都是通過提交表單來(lái)實(shí)現(xiàn),比如提交個(gè)人資料到數(shù)據(jù)庫(kù)等,是比較常見的一種交互方式,那在go語(yǔ)言里面怎么獲取,通過http包來(lái)實(shí)現(xiàn)。
http.Request里面的ParseForm()來(lái)解析表單

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),辛集企業(yè)網(wǎng)站建設(shè),辛集品牌網(wǎng)站建設(shè),網(wǎng)站定制,辛集網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,辛集網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

Web開發(fā)很多年沒有用到了,如果你也同樣沒有服務(wù)器環(huán)境的話,跟著我快速搭一個(gè)Apache的服務(wù)環(huán)境,先下載:
https://www.apachelounge.com/download/
httpd-2.4.54-win64-VS17.zip

下載完之后,解壓即可,來(lái)到配置文件目錄,這個(gè)看你自己存放的地方,本人圖個(gè)簡(jiǎn)單直接放下載目錄了,如下:
C:\Users\Tony\Downloads\httpd-2.4.54-win64-VS17\Apache24\conf

httpd.conf
修改成安裝目錄
Define SRVROOT "C:\Users\Tony\Downloads\httpd-2.4.54-win64-VS17\Apache24"
ServerRoot "${SRVROOT}"

修改端口(避免80被占用,最好大點(diǎn)一般很少被占用,不超過65535即可)
Listen 8011
ServerName localhost:8011

然后用管理員命令行來(lái)到bin目錄:
C:\Users\Tony\Downloads\httpd-2.4.54-win64-VS17\Apache24\bin>httpd -k install
C:\Users\Tony\Downloads\httpd-2.4.54-win64-VS17\Apache24\bin>httpd -k start

然后重啟下
C:\Users\Tony\Downloads\httpd-2.4.54-win64-VS17\Apache24\bin>httpd -k restart

輸入:http://localhost:8011/ 即可顯示It works!這個(gè)頁(yè)面就是htdocs里的index.html

然后我們寫一個(gè)go程序來(lái)獲取其表單提交的內(nèi)容

test.go

package main

import (
	"fmt"
	"log"
	"net/http"
)

func GetForm(w http.ResponseWriter, r *http.Request) {
	r.ParseForm()
	for k, v := range r.Form {
		fmt.Printf("鍵:%s,值:%s,%T\n", k, v, v)
	}
	fmt.Fprintf(w, "寅恪光潛")
}
func main() {
	http.HandleFunc("/", GetForm)
	err := http.ListenAndServe("localhost:55555", nil)
	if err != nil {
		log.Fatal(err)
	}
}

go run test.go
執(zhí)行的時(shí)候發(fā)現(xiàn)報(bào)錯(cuò):

listen tcp 127.0.0.1:8011: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
exit status 1

為什么會(huì)被禁止訪問呢,沒權(quán)限?于是使用了一些方法,關(guān)掉防火墻,沒用。

netstat -ano | findstr "8011"
查看端口是不是被其他程序使用

TCP ? ?0.0.0.0:8011 ? ? ? ? ? 0.0.0.0:0 ? ? ? ? ? ? ?LISTENING ? ? ? 4028
TCP ? ?[::]:8011 ? ? ? ? ? ? ?[::]:0 ? ? ? ? ? ? ? ? LISTENING ? ? ? 4028

好像也不是,這個(gè)就是上面我們弄的Apache服務(wù)開的端口。
那是什么原因呢?網(wǎng)上有兩種答案,一個(gè)是Hyper-v的問題,于是關(guān)閉它
dism.exe /online /disable-feature:microsoft-hyper-v
一樣報(bào)錯(cuò)
還有一種就是將一些端口排除開來(lái),避免被使用,于是將8011開始的10個(gè)端口號(hào)都排除,為連續(xù)的端口塊添加排除
netsh int ipv4 add excludedportrange protocol=tcp startport=8011 numberofports=10

標(biāo)記 ? ? ? ? ? ? ? ? 值
protocol ? ? ? - 為以下值之一:
?tcp: 為 TCP 添加排除。
?udp: 為 UDP 添加排除。
startport ? ? ?- 排除的起始端口號(hào)。
numberofports ?- 從排除的 startport 開始的
?端口號(hào)。
store ? ? ? ? ?- 為以下值之一:
?active: 設(shè)置只持續(xù)到下一次啟動(dòng)。
?persistent: 更改持久有效。
?這是默認(rèn)值。

另一個(gè)程序正在使用此文件,進(jìn)程無(wú)法訪問。

端口被使用了,這個(gè)時(shí)候我好像找到原因了,因?yàn)槲覔Q了端口,重啟Apache之后再來(lái)排除端口,那這個(gè)端口只能是Apache開啟端口被占用。
思路對(duì)了之后,問題就好解決了:
新開一個(gè)端口55555,然后先不要打開http://localhost:55555/這樣的服務(wù),不然端口被占用了。
先執(zhí)行g(shù)o語(yǔ)言程序,這樣就一直是監(jiān)聽狀態(tài),然后打開一個(gè)頁(yè)面,提交表單

get提交的話,也就是一個(gè)這樣的網(wǎng)址
http://localhost:55555/?NickName=Tony&Age=28&Hobby=Reading
這個(gè)時(shí)候我們就可以發(fā)現(xiàn)go程序獲取到了表單的數(shù)據(jù)了,Age修改成28,又接收到一次值:

C:\Users\Tony>go run test.go
鍵:Hobby,值:[Reading],[]string
鍵:NickName,值:[Tony],[]string
鍵:Age,值:[18],[]string
鍵:NickName,值:[Tony],[]string
鍵:Age,值:[28],[]string
鍵:Hobby,值:[Reading],[]string

當(dāng)然了,post提交同樣可以獲取,大家可以試下。

不過又出來(lái)一個(gè)新問題,發(fā)現(xiàn)沒有執(zhí)行g(shù)o程序,打開服務(wù)地址不可用了,這個(gè)又是一個(gè)奇怪問題哈哈。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁(yè)標(biāo)題:Go語(yǔ)言解析表單form里提交的值以及錯(cuò)誤處理-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article36/dcppsg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)用戶體驗(yàn)、微信小程序定制網(wǎng)站、動(dòng)態(tài)網(wǎng)站、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司