如何在 http 响应正文中返回编码字符串?

将编码字符串添加到 http 响应似乎用 !F(MISSING) 替换了一些字符。如何防止?


输出:


{"encodedText":"M6c8RqL61nMFy%!F(MISSING)hQmciSYrh9ZXgVFVjO"}


代码:


package main


import (

    "encoding/json"

    "fmt"

    "net/http"

    "net/url"

)


type EncodeResult struct {

    EncodedText string `json:"encodedText"`

}


func main() {


    http.HandleFunc("/encodedString", encodedString)

    _ = http.ListenAndServe(":8080", nil)

}


func encodedString(w http.ResponseWriter, r *http.Request) {


    inputString := "M6c8RqL61nMFy/hQmciSYrh9ZXgVFVjO"

    er := EncodeResult{url.QueryEscape(inputString)}

    response, _ := json.Marshal(er)


    w.Header().Set("Content-Type", "application/json")

    fmt.Fprintf(w, string(response))

}


慕码人8056858
浏览 266回答 2
2回答

郎朗坤

您正在使用转义值“M6c8RqL61nMFy%2FhQmciSYrh9ZXgVFVjO”作为这一行的格式字符串:fmt.Fprintf(w, string(response))Fprintf 尝试格式化动词“%2F”的参数。没有参数,因此 Fprintf 为动词打印 "%!F(MISSING)"。解决方法是不将输出用作格式字符串。因为写入响应时不需要任何格式,所以将最后一行更改为:w.Write(response)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go