我有一个AngularJS Framework的控制器。我使用Http Post Request将数组发送到服务器。如何在java方法中获取此数组?
这是我的控制器
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
var indici = new Array();
indici.push(1);
indici.push(2);
$http.post("http://localhost:8080/SistemiDistribuiti/rest/Point/Trovati", indici, {
headers: { 'Content-Type': 'application/json' }
}).success(function(receivedData, status) {
$scope.someData = receivedData;
});
这是我的java课程,但我不知道如何获取我的数组。
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.POST;
import javax.ws.rs.Consumes;
@Path("Point")
public class PointService {
@POST
@Path("Trovati")
@Consumes(MediaType.APPLICATION_JSON)
public void RetrieveData() {
//how print my array?
}
答案 0 :(得分:1)
您必须使用@GET
,如下所示:
@GET
@Path("/blabla")
public Response receiveListOfStrings(@QueryParam("list") final List<String> list){
log.info("receieved list of size="+list.size());
return Response.ok().build();
}
请求:
GET http://example.com/services/echo?list=balbla&list=asdasd&list=BYE
Post不支持此功能。或者您可以使用复杂类型的@PUT
。
设置示例:
@PUT
public Response putExample(MyObject obj) {
log.info("receieved list of size="+obj.getList().size());
return Response.ok().build();
}
在此举例中,您可以看到我使用了自定义MyObject
以下是其代码:
public class MyObject{
private List<String> list = new ArrayList<String>();
public List<String> getList(){
return list;
}
public void setList( List<String> list ){
this.list = list;
}
@Override
public String toString(){
return "MyObject [list=" + list + "]";
}
}
正如您所看到的, MyObject 类中的列表属性。因此,您可以通过调用 getList 作为上面的示例来打印任何内容。
答案 1 :(得分:1)
我同意@ lex82,您不会在请求中发送有效负载。请参阅$http.post
的文档:https://docs.angularjs.org/api/ng/service/ $ http#post。请务必了解承诺是什么以及如何在Angular的HTTP支持中使用它们。
以下是一个示例:
var dataToSend = {
// some JSON data
};
$http.post("/some-url", dataToSend, {
headers: { 'Content-Type': 'application/json' }
}).success(function(receivedData, status) {
$scope.someData = receivedData;
});
那就是说,你说你没有收到服务器上的数据。首先要检查您的原始请求。这可以使用Chrome开发者工具(CRTL + SHIFT + i)在Chrome中完成。这将允许您访问包含每个请求的“网络”选项卡。单击与您的AJAX请求相对应的请求,并检查您的请求中是否有有效负载。如果是这样,那么您的JAXRS应用程序中的服务器端就会出现问题。
您的JAXRS应用程序中是否存在一些异常?
希望它可以帮到你, 亨利
答案 2 :(得分:1)
Apache有一个http库,可用于发出各种http请求。
div
您还需要一个可用于将json对象转换为Java对象的库。谷歌创建了一个名为gson的库,我将在我的例子中使用它。
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.2</version>
</dependency>
您还必须创建一个代表您的数据的Java对象。这将用于将您的json对象映射到java对象或&#34; pojo&#34;。我不确定您的JSON对象是什么样的,但我将使用一个名为Response的通用示例。
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.4</version>
</dependency>
您的java对象必须具有与JSON对象相同类型和名称的相同数量的字段。
接下来,您必须编写一个调用角度api的函数。请参阅以下示例:
public class Response
{
private List<Example> examples;
private double total;
private String someString;
public QuoteResponse()
{
super();
}
public List<Examples> getExamples() {
return examples;
}
public void setExamples(List<Examples> examples)
{
this.examples = examples;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
public String getSomeString() {
return someString;
}
public void setPrint_type(String someString) {
this.someString = someString;
}
}
关于它。如果您有任何问题,请告诉我。