2 jonskeet JonSkeet 于 2013.07.19 13:25 提问

使用http post如何传递多参数到restful web服务?

我创建了俩个数组参数和Objects数组,我想传递它们,我可以用下面的方法吗?

 @POST
 @Path("Test3")
 @Produces("text/plain")
 @Consumes({"application/json"})
  public String Test3(String[] id1,String[] id2 ,Object [] oo) {
        String result = "Hello ";

       ....
       ....
        return result;
    }

我要传递到这个方法里相应的 json 是什么?
我使用了很多的jsons,总是获得下面的错误:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>GlassFish Server Open Source Edition  4.0  - Error report</title><style type="text/css"><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - Internal Server Error</h1><hr/><p><b>type</b> Exception report</p><p><b>message</b>Internal Server Error</p><p><b>description</b>The server encountered an internal error that prevented it from fulfilling this request.</p><p><b>exception</b> <pre>javax.servlet.ServletException: Servlet.init&#40;&#41; for servlet entities.service.ApplicationConfig threw exception</pre></p><p><b>root cause</b> <pre>org.glassfish.jersey.server.model.ModelValidationException: Validation of the application resource model has failed during application initialization.
[[FATAL] Method public java.lang.String entities.service.ItemFacadeREST.Test3&#40;java.lang.String,java.lang.String&#41; on resource class entities.service.ItemFacadeREST contains multiple parameters with no annotation. Unable to resolve the injection source.&#59; source=&#39;ResourceMethod{httpMethod=POST, consumedTypes=[application/json], producedTypes=[text/plain], suspended=false, suspendTimeout=0, suspendTimeoutUnit=MILLISECONDS, invocable=Invocable{handler=MethodHandler{handlerClass=class entities.service.ItemFacadeREST, handlerConstructors=[org.glassfish.jersey.server.model.HandlerConstructor@cdf30b]}, handlingMethod=public java.lang.String entities.service.ItemFacadeREST.Test3&#40;java.lang.String,java.lang.String&#41;, parameters=[Parameter [type=class java.lang.String, source=null, defaultValue=null], Parameter [type=class java.lang.String, source=null, defaultValue=null]], responseType=class java.lang.String}, nameBindings=[]}&#39;]</pre></p><p><b>note</b> <u>The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition  4.0  logs.</u></p><hr/><h3>GlassFish Server Open Source Edition  4.0 </h3></body></html>

对于http post我想从android中调用。

3个回答

Jave_
Jave_   2013.07.19 14:03

用BasicNameValuePair设置成Enity进行post

u010115259
u010115259   2015.05.21 15:06

id1=[a,b]&id1=[c,d]&oo=[1,2,e]

qq_21434755
qq_21434755   2017.09.04 20:57

入参
{
"number":"1234",
"fnumber":"123",
"assnum":"2"
}

/**
* 根据销售品ID获取销售品详情接口
* @param productId 销售品ID
* @param channelId 渠道ID
* @return
*/
@Path("/getProductDetailsInfoByProductId")
@POST
@Consumes("application/json; charset=UTF-8")
@Produces("application/json; charset=UTF-8")
public BaseExecuteResult getProductDetailsInfoByProductId(String json) {
JSONObject object = JSONObject.parseObject(json);
String productId = object.getString("productId");
String channelId = object.getString("channelId");
BaseExecuteResult result = productServiceAPI.getProductDetailsInfoByProductId(productId,channelId);
return result;
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
Restful Web Api Get 和 Post 请求的参数设置
1、Get请求(用HttpClient或HttpWebRequest) [HttpGet] public int Get(int id) { return id; } static void Main(string[] args) { string url = "http://loc
Restful接口传入多参数的问题和解决方案
结论: restful风格的接口不支持多个参数 注:本文指的是通过json序列化参数的情况前置 解决方法: 1.封装对象 2.使用@PathVariable 3.改变序列化格式,不使用json,使用form
Spring Cloud Feign构造多参数的请求
Spring Cloud中, 使用Feign构造多参数的请求
构建Scala的REST服务
原文地址:http://sysgears.com/articles/building-rest-service-with-scala Building REST Service with Scala August 01, 2013 In Oleg's Blog Rest Scala Sbt Spray Slick Enterpri
SpringBoot中Rest风格接口传递多个参数
       这次在项目开发中要求写Rest风格接口,在调试时发现有个按条件分页查询的接口涉及到多参数传递。因为参数较多,不想使用GET请求避免参数太过繁琐,经过试验,发现可以使用POST请求在后台通过JavaBean来接受所有参数。现在做下记录:        参数实体类:@Datapublic class OrderPageDTO { /**   *用户分象ID   */    priv...
springmvc 框架下使用restful接口参数数据传输
RESTful API put和delete方法出问题了。上网查了一下,是浏览器不支持put,delete等方法,需要加个Filter来将原来的请求转换成标准的http put,delete方法,还需要在form表单里隐式的指明HTTP method,这样参数的传递就变得正常了
实现请求url或者restful webservice的方式
实现请求url或者restful webservice的方式
Cxf发布Rest服务时,利用WebClient传递QueryParam参数
项目中用到Cxf发布的Rest服务,对于Get方式的Rest服务,既可以用httpClient发送url方式发送请求(把参数拼接在url后面,如:http://localhost:8080/FMRest/rest/stus/bean?name=aaa&age=18),也可以通过WebClient对象调用Rest服务的方法。 在用WebClient调用服务时,传递参数方式如下: 1.对于Path
Spring REST Controller,在GET方式下,有多个参数时的处理
现在越来越多的服务都转向使用RESTful了,我们的项目也不例外,使用spring来做了REST。在采用RESTful的时候,我们会严格按照约定来使用 HTTP METHOD: GET: 查询 POST: 创建 PUT: 修改 DELETE: 删除 本来,按照这种方式来做的时候,开发都很方便。不过,最近遇到一个问题: 在一个查询接口中,需要的参数比较多,如果还是使用GET方式进行请求的话,那么
RESTFul中的那些事(2)----如何支持RESTFul的HTTP Patch方法?
们在调用RESTFul服务的时候,有的时候,第三方的服务会提供支持PATCH 操作的方法,在这种情况下,我们如果我们下面的这种方式, 去调用PATCH操作,肯定会返回40X的错误。那么,解决的方案是什么呢?