当前位置: 首页 > 知识库问答 >
问题:

发送PUT请求与Content-Type: Application/x-ww-form-urlencoded和发送图像文件不工作

龙佐
2023-03-14

当我发送PUT请求与内容类型:应用程序/x-wow-form-urlencoded和错误的内容像图像;请求没有得到服务器正确处理,它发送回以下异常没有任何处理服务器:

错误Servlet。路径为[]的上下文中servlet[dispatcherServlet]的service()引发异常;JAVAlang.IllegalArgumentException:URLDecoder:转义(%)模式中的非法十六进制字符-用于输入字符串:“h”�" 在爪哇。网URL解码器。在org上解码(urldecover.java:194)。springframework。http。转换器。FormHttpMessageConverter。在org上阅读(FormHttpMessageConverter.java:241)。springframework。网状物滤器HttpPutFormContentFilter。doFilterInternal(HttpPutFormContentFilter.java:100)位于org。springframework。网状物滤器OncePerRequestFilter。doFilter(OncePerRequestFilter.java:107)位于org。阿帕奇。卡塔琳娜。果心ApplicationFilterChain。org上的internalDoFilter(ApplicationFilterChain.java:192)。阿帕奇。卡塔琳娜。果心ApplicationFilterChain。doFilter(ApplicationFilterChain.java:165)位于org。springframework。网状物滤器HiddenHttpMethodFilter。doFilterInternal(HiddenHttpMethodFilter.java:81)位于org。springframework。网状物滤器OncePerRequestFilter。doFilter(OncePerRequestFilter.java:107)位于org。阿帕奇。卡塔琳娜。果心ApplicationFilterChain。org上的internalDoFilter(ApplicationFilterChain.java:192)。阿帕奇。卡塔琳娜。果心ApplicationFilterChain。doFilter(ApplicationFilterChain.java:165)位于org。springframework。网状物滤器字符编码过滤器。doFilterInternal(CharacterEncodingFilter.java:197)位于org。springframework。网状物滤器OncePerRequestFilter。doFilter(OncePerRequestFilter.java:107)位于org。阿帕奇。卡塔琳娜。果心ApplicationFilterChain。org上的internalDoFilter(ApplicationFilterChain.java:192)。阿帕奇。卡塔琳娜。果心ApplicationFilterChain。doFilter(ApplicationFilterChain.java:165)位于org。阿帕奇。卡塔琳娜。果心标准包装阀。在org上调用(StandardWrapperValve.java:198)。阿帕奇。卡塔琳娜。果心标准连接阀。在org上调用(StandardContextValve.java:96)。阿帕奇。卡塔琳娜。验证者。AuthenticatorBase。在org调用(AuthenticatorBase.java:474)。阿帕奇。卡塔琳娜。果心标准阀门。在org上调用(StandardHostValve.java:140)。阿帕奇。卡塔琳娜。阀门。错误报告阀。在org调用(ErrorReportValve.java:79)。阿帕奇。卡塔琳娜。果心标准引擎版本。在组织中调用(StandardEngineValve.java:87)。阿帕奇。卡塔琳娜。连接器。郊狼适应者。服务(CoyoteAdapter.java:349)位于org。阿帕奇。郊狼。http11。http11处理器。服务(Http11Processor.java:783)位于org。阿帕奇。郊狼。抽象光。进程(AbstractProcessorLight.java:66)位于org。阿帕奇。郊狼。AbstractProtocol$ConnectionHandler。进程(AbstractProtocol.java:798)位于org。阿帕奇。公猫util。网NioEndpoint$SocketProcessor。doRun(NioEndpoint.java:1434)位于org。阿帕奇。公猫util。网SocketProcessorBase。在java上运行(SocketProcessorBase.java:49)。util。同时发生的线程池执行器。java上的runWorker(ThreadPoolExecutor.java:1142)。util。同时发生的线程池执行器$Worker。在org上运行(ThreadPoolExecutor.java:617)。阿帕奇。公猫util。线程。TaskThread$WrappingRunnable。在java上运行(TaskThread.java:61)。朗。丝线。运行(Thread.java:745)

在Spring,他们有没有办法让我们处理这种情况?

共有1个答案

令狐增
2023-03-14

文件需要是多部分/表单数据内容类型

你基本上有三个选择:

>

  • Base64对文件进行编码,代价是将数据大小增加约33%。

    在多部分/表单数据POST中首先发送文件,并将ID返回给客户端。然后,客户端发送带有ID的元数据,服务器将文件与元数据重新关联。

    首先发送元数据,并向客户端返回ID。然后,客户端发送带有ID的文件,服务器重新关联文件和元数据。

  •  类似资料:
    • 我有一些参数,我想POST格式编码到我的服务器: 我发送的请求(目前没有参数)如下 如何在请求中包含表单编码参数?

    • 我试图使用以下客户端代码调用REST服务,目的是发送一些字符串消息详细信息以及附件文件: 我的目标服务器接受Base64编码的内容,这就是为什么额外的从文件传输到ByteArray的原因。 此外,我发现类com.sun.jersey.core.impl.provider.entity.FormProvider用于生产和消费“x-www-form-urlencoded”请求。 但我还是得出了以下结论

    • 在java中,如何使用。我不明白如何发送带有键值的正文,如上面的屏幕截图所示。 我尝试过以下代码: 但是在回复中,我没有收到正确的数据。

    • 问题内容: REST API映射到Java对象时,采用输入内容类型: 在表单输入请求中,我正在设置my_name和my_phone的值,但是MyRequest对象带有myName和myPhone作为空值。 我正在使用Jackson批注2.3 jar 有什么建议可能有什么问题吗? 问题答案: 我最近在使用SpringMVC和Jackson时遇到了同样的问题! 在Spring中,当您将端点显式配置为仅

    • 我的要求很简单。 响应是xml格式的。 我尝试了很多地方的例子,但似乎没有任何效果。它返回401 Unauthorized,如果请求的格式不正确,目标API就会抛出这个错误。

    • 问题内容: 我们如何在NodeJS中发出这样的HTTP请求?示例或模块的赞赏。 问题答案: Mikeal的请求 模块可以轻松做到这一点: