当前位置: 首页 > 面试题库 >

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

李捷
2023-03-14
问题内容

将编码的字符串添加到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))
}

问题答案:

您正在使用转义值“ M6c8RqL61nMFy%2FhQmciSYrh9ZXgVFVjO”作为以下行上的格式字符串:

fmt.Fprintf(w, string(response))

Fprintf尝试格式化动词“%2F”的自变量。没有参数,因此Fprintf为动词打印“%!F(MISSING)”。

解决方法是不要将输出用作格式字符串。由于写入响应时不需要任何格式,因此将最后一行更改为:

w.Write(response)


 类似资料:
  • 我想用响应替换http异常,也就是说,我使用我想返回的responseentity,例如409如果没有通过名称找到用户,509如果没有通过邮件找到用户,我可以确定responseentity中的错误号及其描述吗?如果有,可以举例说明吗?

  • 问题内容: 我知道曾经有一种使用apache commons来获取它的方法,如此处记录的:http : //hc.apache.org/httpclient-legacy/apidocs/org/apache/commons/httpclient/HttpMethod.html 和此处的示例: http://www.kodejava.org/examples/416.html 但我认为这已被弃用。

  • 我使用spring MVC来创建一个简单的JSON API,使用基于的方法,如下所示。(我已经有一个直接生成JSON的服务层。) 问题是,在给定的场景中,什么是响应HTTP 400错误的最简单、最干净的方法? 我确实遇到过这样的做法: ...但我不能在这里使用它,因为我的方法的返回类型是String,而不是ResponseEntity。

  • 我使用Spring MVC作为一个简单的JSON API,使用基于的方法,如下所示。(我已经有一个直接生成JSON的服务层。) 在给定的场景中,最简单、最干净的HTTP 400错误响应方式是什么? 我确实遇到了这样的方法: ...但是我不能在这里使用它,因为我的方法的返回类型是字符串,而不是响应实体。

  • 我想知道当服务器端发生错误时返回是否正确(错误详细信息将包含在响应主体中)。 例子: 我们正在发送 这是不是正确的行为?我们是否应该将状态代码更改为200以外的值?

  • 问题内容: 我正在尝试让Apache HttpClient触发HTTP请求,然后显示HTTP响应代码(200、404、500等)以及HTTP响应正文(文本字符串)。重要的是要注意我正在使用,因为那里有大多数HttpClient示例,并且API从版本3到版本4有了很大的变化。 不幸的是,我只能使HttpClient返回状态代码 或 响应正文(但不能同时返回两者)。 这是我所拥有的: 所以我问: 使用