为了账号安全,请及时绑定邮箱和手机立即绑定

在获取响应后获取 400,尽管 url 格式正确

在获取响应后获取 400,尽管 url 格式正确

Go
缥缈止盈 2022-08-15 15:44:54
按如下所示执行获取 URLresp, err := http.Get(path)事先,我打印了或多或少像这样变量pathhttp://localhost:8080/api/history/resources/count?startedAfter="2021-03-06T15%3A27%3A13.894415787%2B0200"当我点击链接时,它确实返回并得到有效的响应。200json但是,代码本身会失败并打印:<!doctype html><html><head><title>HTTP Status 400 – Bad Request</title>Invalid character found in the request target [&#47;api&#47;history&#47;resources&#47;count?startedAfter=&quot;2021-03-06T15%3A27%3A13.894415787%2B0200&quot;]. The valid characters are defined in RFC 7230 and RFC 3986</p><p><b>Description</b> The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).</p><p><b>Exception</b></p><pre>java.lang.IllegalArgumentException: Invalid character found in the request target [&#47;apit&#47;history&#47;resources&#47;count?startedAfter=&quot;2021-03-06T15%3A27%3A13.894415787%2B0200&quot;]. The valid characters are defined in RFC 7230 and RFC 3986        org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:491)        org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:260)        org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)        org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)        org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)        org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)        java.base&#47;java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)        java.base&#47;java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)        org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)        java.base&#47;java.lang.Thread.run(Thread.java:834)为什么?
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

查询参数中的引号似乎导致服务器出现错误。试试这样的东西


apiURL := "http://localhost:8080/api/history/resources/count"

req, err := http.NewRequest("GET", apiURL, nil)

if err != nil {

    log.Fatal(err)

}


apiParams := req.URL.Query()

apiParams.Add("startedAfter", "2021-03-06T15:27:13.894415787+0200")

req.URL.RawQuery = apiParams.Encode()


res, err := http.DefaultClient.Do(req)

尝试并还原。


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 100 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信