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
上传中...
上传图片
插入图片