问题标签 [form-parameter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1082 浏览

file - curl --form 文件重定向

这有效:

这不会:

错误:无效的 API 密钥

cURL 手册 ( http://curl.haxx.se/docs/manpage.html ) 明确指出

-F/--form (HTTP) 这让 curl 模拟用户按下提交按钮的填写表单。[...] 要强制“内容”部分成为文件,请在文件名前加上 @ 符号。要仅从文件中获取内容部分,请在文件名前加上符号 <。@ 和 < 之间的区别在于 @ 使文件作为文件上传附加在帖子中,而 < 生成文本字段并仅从文件中获取该文本字段的内容。


FWIW:如果我使用 --form "apikey=@keyfile" 我得到错误:“API key is required”。这证实了 @ 肯定是错误的(我同意)。但是为什么不起作用<,该怎么办呢?

看起来文件的内容要么没有传递,要么错误。因此,我已经四重确定,文件中只有 api 密钥(此处:39485730),没有其他内容。


如果我尝试这样做很重要:
我需要在脚本中使用这个 curl 命令,并且不想将 API 密钥放在那里。相反,它应该在运行此脚本的用户的 HOME 中,只有他可以读取,其他人不能读取。

提前感谢您的任何见解... :-)

0 投票
1 回答
1150 浏览

asp.net-mvc-2 - 将参数作为查询字符串而不是表单参数发送到另一个操作

我有一个表单,它有一个字段,用于保存搜索查询和一个按钮,用于将查询值发送到另一个操作方法以执行搜索。现在我想将此参数作为查询字符串发送;不是表单参数。但是当我点击提交按钮时,它的值不会显示在地址栏上并作为表单参数发送。

点击提交按钮后的 URL 是 .../search/result 我想成为 .../search/result?query=someQueries

预先感谢 ;)

0 投票
3 回答
1496 浏览

java - RESTlet 似乎在双重解码我的表单参数

我在 Tomcat 服务器中嵌入了一个 RESTlet 应用程序,客户端抱怨 @FormParm 参数中的 % 符号在 RESTlet 框架中被双重解码,导致服务器错误 500。

我的问题是:客户端是否需要对百分比符号进行双重编码(例如发送 xx%2525xx 来表示五个字符序列“xx%xx”)?如果是这样,这是 RESTlet 框架中的错误还是编码表单参数的常用方式?如果不是,我如何滥用 RESTlet 框架?

我的 API 看起来像

一个 curl 命令,如:

curl -H "接受:应用程序/json" -d "name=100%25+working" http://${host}/api/sessionx21/foo/home/

生成如下所示的服务器端堆栈跟踪:

2012 年 4 月 2 日下午 5:15:20 org.restlet.ext.jaxrs.internal.util.ExceptionHandler methodInvokeException 警告:无法调用资源方法 java.lang.IllegalArgumentException:URLDecoder:转义 (%) 模式中的非法十六进制字符 -对于输入字符串:“w”在 java.net.URLDecoder.decode(URLDecoder.java:173) 在 org.restlet.data.Reference.decode(Reference.java:170) 在 org.restlet.data.Reference.decode( Reference.java:143) 在 org.restlet.ext.jaxrs.internal.wrappers.params.ParameterList$AbstractParamGetter.convertParamValue(ParameterList.java:186) 在 org.restlet.ext.jaxrs.internal.wrappers.params.ParameterList$ AbstractParamGetter.convertParamValue(ParameterList.java:166) at org.restlet.ext.jaxrs.internal.wrappers.params.ParameterList$FormOrQueryParamGetter.getParamValue(ParameterList.java:529) 在 org.restlet.ext.jaxrs.internal.wrappers.params.ParameterList$AbstractParamGetter.getValue( ParameterList.java:409) 在 org.restlet.ext.jaxrs.internal.wrappers.params.ParameterList.get(ParameterList.java:1096) 在 org.restlet.ext.jaxrs.internal.wrappers.AbstractMethodWrapper.internalInvoke(AbstractMethodWrapper.爪哇:166)AbstractMethodWrapper.internalInvoke(AbstractMethodWrapper.java:166)AbstractMethodWrapper.internalInvoke(AbstractMethodWrapper.java:166)

我的 pom.xml 文件包含

0 投票
2 回答
637 浏览

escaping - @FormParam 被截断以嵌入 ' 内容 Apache Wink

我承认我们通过使用 url 编码的表单在单个变量中发送 XML 文档(换行符转换为空格,内容转义)来做一些愚蠢的事情,但这是为了适应只能发送表单数据的客户端。

当转义的 XML 内容中的一个字符串包含撇号时

请求正文的解析停止并且不返回变量的其余部分。当然,这会产生一个问题,因为我们检索的 XML 文档是不完整的。

当接收者使用 Apache Wink JAX-RS 库时,在表单参数中传递撇号的正确方法是什么?

像这样的一行:

工作正常,但像这样的一行:

在“Square project”之后被截断

被转义的字符是:

0 投票
1 回答
6721 浏览

java - 使用 @FormParam 的 PUT 方法

如果我有类似的东西:

如何输入这两个参数来测试我的 REST 服务(在内容字段中)?不是这样的:

谢谢

0 投票
2 回答
28018 浏览

web-services - REST 服务 - 在浏览器中测试 PUT 方法

我开发了 REST 服务。我可以通过浏览器或客户端应用程序测试 GET 方法。但是那些有 PUT 方法的人我不知道浏览器如何使用它们......

例如,在我插入 userId 后,我有一个打开灯的方法:

在我的客户端应用程序中,我这样做了,它可以工作:

但是如何通过浏览器发送 userId 呢?

另一件事,我在构建项目时收到此消息:

谢谢

0 投票
1 回答
5752 浏览

java - @FormParam 参数在我的 JAX-RS 资源服务中始终为空

这是我通过 curl 请求的服务:

资源:

该服务运行良好,但突然失败。现在参数 myIds 始终为空,并且 curl 的结果是 400 bad request...我没有更改此资源中的任何内容,因此它应该仍然可以工作。如果有人有想法,请告诉我。谢谢!

0 投票
1 回答
226 浏览

javascript - Spring提交有双重参数

我是 Spring Web 应用程序的新手。当我提交表单时,请求映射得到一个“双重”参数。我的表格设置为:

我使用javascript提交表单,例如,当我提交表单以访问各个页面时,我的javascript是这样的:

所以当我的jsp页面上有这样的链接时,

在我的 /trx 请求映射的控制器上,我应该将参数页面作为值“3”,但我将值作为“3,3”。

任何想法为什么?我只注意到页面参数,如果我使用 action=search 或 action=sort 之类的参数。这一切都很好。

0 投票
1 回答
10365 浏览

java - 使用带有 @FormParam 的 POST(带有 Jersey REST 的 Java Web 服务)出现 405“不允许的方法”错误

我知道向 REST 服务器(资源)传递既不是字符串也不是简单类型的东西并不容易。
但是对于一个简单的订购过程,我需要从客户端向服务器发送一个文章列表(应订购)。

我已经尝试使用“QueryParam”,将我的对象(我将列表包装成 DTO)转换为 JSON-String 并传递它。它没有用。(但是对于不需要将对象传递给服务器的其他方法,我的服务可以正常工作,甚至是 POST 方法。)

然后我发现了 @FormParam 理论上可以传输各种对象。(这是我读到的,这是真的吗?)

所以我尝试了一种非常简单的测试方法将字符串列表传递给服务,服务器端应该返回该列表的元素数量。

那是我的代码:

在服务器端(资源):


在客户端(在会话 Bean 中):

像这样构建服务的地方:

从我的 GUI 或直接通过 EJB Explorer 调用此客户端方法总是会出现 405 错误。

问题出在哪里?我是否错过了 POST、MIME 类型或表单的某些内容?

顺便说一句,即使使用像 String 或 int 这样的简单表单参数,它也不起作用并且还会引发 405 错误。

谢谢你的帮助!
亚娜

0 投票
1 回答
13083 浏览

java - POST 期间 REST Web 服务中的 HTTP 400 错误,FormParam 包含自己的对象(例如实体)

对于我的 REST 服务中的订购过程,我必须将“文章”列表从客户端发送到服务器。这些物品对象是自制的实体类型。我已经发现发送 STRING 或 INTEGER 对象列表确实有效,通过@FormParam 发送。

但是,一旦我尝试发送我自己的对象列表(甚至只有一个对象),我总是会收到HTTP 400 错误 "Bad Request"

我尝试了与下面相同的代码(仅更改了 form.add() 的参数和服务器方法的参数)并成功地 postet 字符串、整数和字符串列表。它只会使发送自己的对象类型出现问题。
日志记录告诉我未达到服务器方法。该过程之前的某个地方被破坏了。

我还尝试使用代理(Apache JMeter)来获取请求。这里它说参数kunde包含 value entities.Kunde%40af8358。所以我猜这个对象没有彻底(或根本没有)序列化。但是在响应中将这种对象从服务器发送到客户端工作正常——这里 XML 序列化没有问题。

可能是什么原因?是否可能无法通过 POST 发送自己的类型?
(PS:Kunde我的示例中的类型是可序列化的,并带有注释@XmlRootElement。)

预先感谢您的帮助!
亚娜

注意:我使用的是 SAP Netweaver AS。但到目前为止,它的行为与其他所有 Java AS 一样,所以我认为这不会是原因。其他所有 REST 操作都可以正常工作,即使 POST 没有自己的实体。

另外:我正在使用 JERSEY 库。


我在服务器端的代码:

我在客户端的代码(该方法在会话 Bean 中):

服务是这样构建的: