func httpToPHPGet() {
resp, err := http.Get("phpApiUrl")
if err != nil {
// handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
}
fmt.Println(string(body))
}
如上代码:
-{"code":"1","msg":"xxxxxx"}
你会发现如果我们打印出来前面有个: -
因为PHP有些IDE会默认给编码加BOM头标识UTF-8编码,从而造成golang请求接口后解析错误!
那么怎么处理呢?
func httpToPHPGet() {
resp, err := http.Get("phpApiUrl")
if err != nil {
// handle error
}
defer resp.Body.Close()
resp.Body = bytes.TrimPrefix(resp.Body, []byte{239, 187, 191})
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
}
fmt.Println(string(body))
}
加入resp.Body = bytes.TrimPrefix(resp.Body, []byte{239, 187, 191})
,将bom头去掉就可以了.
ps:如果PHP服务端做了响应处理,请不要加上去Bom头解析