restlet post getFirstValue 总是returns null
restlet post getFirstValue always returns null
我正在使用 postman 客户端向这个不稳定的路由器发送 RES 请求:
public Representation createAgent(Representation entity) {
Form form = new Form(entity);
String user = form.getFirstValue("user");
String password = form.getFirstValue("password");
System.out.println("user: "+ user);
System.out.println("password: "+ password);
System.out.println("form: "+ form.toString());
return (agent.save(getUser(),getPassword()))
? new StringRepresentation("user "+ user +" created", MediaType.TEXT_PLAIN)
: new StringRepresentation("agent creation failed",MediaType.TEXT_PLAIN);
}
尽管打印 form.toString() 显示:
,但用户名和密码始终为空
[[------WebKitFormBoundaryb4FkGv8CgddIf8rn
Content-Disposition: form-data; name="user"
ali
------WebKitFormBoundaryb4FkGv8CgddIf8rn
Content-Disposition: form-data; name="password"
dsndfjo32
------WebKitFormBoundaryb4FkGv8CgddIf8rn--
]]
以下是预览模式下的完整邮递员请求:
POST /v1/agents HTTP/1.1
Host: localhost:9000
Authorization: Basic c2NvdHQ6amRmZ2pkZnRnaA==
Cache-Control: no-cache
Postman-Token: ef58fda2-8974-0d9f-7a23-10c94df8552e
Content-Type: multipart/form-data; boundary=---- WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="user"
ali
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="password"
dsndfjo32
----WebKitFormBoundary7MA4YWxkTrZu0gW
事实上,如果您查看请求中发送的数据的内容类型,这对应于多部分内容而不是 URL 编码形式。
您在服务器资源中使用的代码仅适用于 URL 编码形式(内容类型 application/x-www-form-urlencoded
)。所以什么都得不到也是正常的。有关信息,这种方法的有效载荷是这样的:
user=my+user&password=my+password
也许这是你想要的。如果是这样,请选择 Postman 中的选项卡 x-www-form-urlencoded
...
Multipart 通常用于上传包含附加数据的文件。如果 multipart 是你想要的,你应该看看这个 link: http://restlet.com/technical-resources/restlet-framework/guide/2.3/extensions/fileupload.
希望对您有所帮助,
蒂埃里
我正在使用 postman 客户端向这个不稳定的路由器发送 RES 请求:
public Representation createAgent(Representation entity) {
Form form = new Form(entity);
String user = form.getFirstValue("user");
String password = form.getFirstValue("password");
System.out.println("user: "+ user);
System.out.println("password: "+ password);
System.out.println("form: "+ form.toString());
return (agent.save(getUser(),getPassword()))
? new StringRepresentation("user "+ user +" created", MediaType.TEXT_PLAIN)
: new StringRepresentation("agent creation failed",MediaType.TEXT_PLAIN);
}
尽管打印 form.toString() 显示:
,但用户名和密码始终为空[[------WebKitFormBoundaryb4FkGv8CgddIf8rn
Content-Disposition: form-data; name="user"
ali
------WebKitFormBoundaryb4FkGv8CgddIf8rn
Content-Disposition: form-data; name="password"
dsndfjo32
------WebKitFormBoundaryb4FkGv8CgddIf8rn--
]]
以下是预览模式下的完整邮递员请求:
POST /v1/agents HTTP/1.1
Host: localhost:9000
Authorization: Basic c2NvdHQ6amRmZ2pkZnRnaA==
Cache-Control: no-cache
Postman-Token: ef58fda2-8974-0d9f-7a23-10c94df8552e
Content-Type: multipart/form-data; boundary=---- WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="user"
ali
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="password"
dsndfjo32
----WebKitFormBoundary7MA4YWxkTrZu0gW
事实上,如果您查看请求中发送的数据的内容类型,这对应于多部分内容而不是 URL 编码形式。
您在服务器资源中使用的代码仅适用于 URL 编码形式(内容类型 application/x-www-form-urlencoded
)。所以什么都得不到也是正常的。有关信息,这种方法的有效载荷是这样的:
user=my+user&password=my+password
也许这是你想要的。如果是这样,请选择 Postman 中的选项卡 x-www-form-urlencoded
...
Multipart 通常用于上传包含附加数据的文件。如果 multipart 是你想要的,你应该看看这个 link: http://restlet.com/technical-resources/restlet-framework/guide/2.3/extensions/fileupload.
希望对您有所帮助, 蒂埃里