我要做的是通过用户交互从我的前端代码发起ajax调用。这称为我编写的Java Restful服务。而这个Java函数调用另一个服务。
我需要中间的java服务,因为我需要以" MyModel"的格式将输入发送到其他服务。
问题是,AJAX调用有效,但无法获取我发送的JSON对象。你在下面的Java函数中看到我创建了" param1" :" asdasd"这是第二次。这是因为它无法从前端获取JSON数据。它应该使用sendInputs函数的参数动态创建。
顺便说一句,当我调试值时,String输入是这样的:""
Javascript AJAX调用:
var paramData = {"param1" : "asdasd"};
$.ajax({
type : 'GET',
url : "/api/v2/proxy",
dataType : "json",
headers : {
"Service-End-Point" : "http://localhost:9000/service/myService/sendInputs"
},
statusCode : {
200 : function(data) {
}
},
contentType : "application/json",
data : JSON.stringify(paramData),
error : function(error) {
}
});
Java使用:
@GET
@Path("/sendInputs")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public String sendInputs(String input) {
String result = null;
//define the service endpoint to be added the default URL
String serviceEndpoint = "otherService/tool/runTool";
List<MyModel> modelParameterList = new ArrayList<MyModel>();
MyModel inputParameter = null;
inputParameter = new MyModel("param1", "asdasd");
modelParameterList.add(inputParameter);
//convert the Java Map to a json string using Jackson ObjectMapper
String jsonStringOfInputParameters = toJSON(modelParameterList);
WebClient client = WebClient
.create("http://localhost:9000");
result = client.path(serviceEndpoint)
.query("tool", "myTool")
.query("input", jsonStringOfInputParameters)
.accept("application/json")
//tells cxf to convert the json to a string type upon return
.get(String.class);
// Return the json result as a string
return result;
}
答案 0 :(得分:0)
您的paramData
变量已经是有效的json。我认为你不需要再次使用JSON.Stringify()
。这是什么是ajax调用:
statusCode : {
200 : function(data) {
}
}
状态代码应该来自服务器作为响应。
答案 1 :(得分:0)
首先,你的ajax标题应该是这样的:
headers: {
Accept: "application/json; charset=utf-8",
"Content-Type": "application/json; charset=utf-8"
},
URL:
url: "http://localhost:9000/service/myService/sendInputs"
其次,你需要MyModel
param1
字段,还有setter和getter。这可以是您的服务方式:
public String sendInputs(MyModel model)
{
//model.getParam1() will be "asdasd"
}