我试图通过泽西客户端的Web服务获取一个对象,通过发送预注册ID作为路径变量的服务,在高级REST客户端和邮递员上测试它-它的工作原理,但当我通过泽西客户端从java代码使用Web服务时,我得到超文本标记语言返回而不是JSON。
这是密码
Web服务-
@GET
@ResponseBody
@RequestMapping("/userJSON2/{preRegisterId}")
public PreRegisterJsonResponse userJson2(@PathVariable long preRegisterId){
PreRegisterJsonResponse pjr = new PreRegisterJsonResponse();
try{
PreRegister preRegUser = preRegisterDao.get(preRegisterId);
pjr.setFirstName(preRegUser.getFirstName());
pjr.setMiddleName(preRegUser.getMiddleName());
pjr.setLastName(preRegUser.getLastName());
pjr.setLoginId(preRegUser.getLoginId());
pjr.setRoleId(preRegUser.getRole().getId());
pjr.setUrlCode(preRegUser.getUrlCode());
pjr.setCreatedBy(preRegUser.getCreatedBy().toString());
if(preRegUser.getInvitedUnder() != null){
pjr.setInvitedUnderId(preRegUser.getInvitedUnder().getId());
}else{
pjr.setInvitedUnderId(0);
}
pjr.setSkipBiometrics(preRegUser.isSkipBiometrics());
pjr.setMainRecordOfficer(preRegUser.getMainRecordOfficer());
pjr.setEmployeeId(preRegUser.getEmployeeId());
if(preRegUser.getFond() != null){
pjr.setFondId(preRegUser.getFond().getId());
}else{
pjr.setFondId(0);
}
} catch(Exception ex){
logger.error("Exception in WebServiceController:userJson2() "+ex.getMessage());
}
return pjr;
}
泽西客户-
public static void getInvitedUser(){
try{
Gson gson = new Gson();
Client client = Client.create();
WebResource webResource = client.resource("http://localhost:8080/webApplication/rest/UserJSON2/"+preRegisterId);
ClientResponse response = webResource.accept(MediaType.APPLICATION_JSON).get(ClientResponse.class);
if (response.getStatus() != 200) {
throw new Exception("Exception in getInvitedUser() : "+ response.getStatus());
}
String output = response.getEntity(String.class);
System.out.println("Output from Server .... \n");
System.out.println(output);
preRegisterUser = gson.fromJson(output, PreRegister.class);
}catch(Exception ex){
ex.printStackTrace();
}
}
通过邮递员和ARC消费web服务后-
{
"firstName": "fname",
"middleName": null,
"lastName": "lname",
"loginId": "mith11395@gmail.com",
"roleId": 4,
"urlCode": "1c5f8f37dfb1483db1d694d82fbdcae5",
"createdBy": "50",
"invitedUnderId": 0,
"skipBiometrics": true,
"mainRecordOfficer": null,
"employeeId": "777777",
"fondId": 0
}
如上图所示,通过jersey客户端使用web服务后,我得到的是HTML内容,而不是JSON-
Output from Server ....
<HTML content .......>
然后我得到了这个例外-
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
我知道原因,它无法将JSON转换为object,因为我们没有收到JSON响应altogrther(这是实际问题)。此外,我在错误日志中没有得到任何信息。可能是什么原因,我错过了什么?
任何帮助都将不胜感激。
在泽西,如果你想返回JSON,你应该使用@Produces(MediaType.APPLICATION_JSON)
声明它
@products注释用于指定资源可以生成并发送回客户端的MIME媒体类型或表示。
在方法中添加行:
@RequestMapping("/userJSON2/{preRegisterId}")
@Produces(MediaType.APPLICATION_JSON)
public PreRegisterJsonResponse userJson2(@PathVariable long preRegisterId) {
出于某种原因,我通过POST提交的表单发送的是选项文本,而不是表单的选项值。这是我的选择声明: 当我用PHP打印我的$\u POST数组时。我有: 我对jquery特别陌生,我使用jquery以模态的方式呈现表单,因此我将粘贴下面的完整表单/div和javascript,以防相关: return_frequency()是一个php函数,根据输入返回“每2周”或“每周”。 我错过了什么?
(关于如何强制C#FtpWebRequest使用直接IP而不是通过HTTP代理进入互联网?) 使用C#从FTP服务器获取目录列表。输出被格式化为超文本标记语言。必需是一个未格式化的列表(由Linuxls命令返回)。(试图避免解析超文本标记语言以获取文件列表。) 意见: > FTP服务器是由客户端运行的vsftpd。 在例如Filezilla FTP服务器上列出目录时,不会出现此问题。 获取目录列表
我在将一些客户端数据表逻辑迁移到服务器端时遇到了一些困难。 我当前的问题是,对于Datatables,如果要对一大组数据(20000行)进行分页,我首先需要加载控制器中的所有行,然后将它们传递给视图: 然后,在加载所有内容和Datatables将记录分页为500页之前,需要等待大约2分钟: 我更改了Datatables声明,以通过处理服务器端处理,如下所示: 让它按我所希望的方式工作非常顺利,但问
我在jQuery中看到了这一点——它做了什么?
我在stackoverflow上看了其他一些答案,但没有找到一个回答我问题的答案。 我有一个变量工具快捷方式,它是由对象数组组成的对象: 我试图为对象中的每个元素(上面对象中的3个元素)返回一些HTML。因为我使用的是带有return语句的for循环,所以只显示每个数组的前几个元素(3个元素中的2个)。如何显示所有三个元素?
我想选择强标签内的文本,但不在其下的div。。。 有没有可能直接与jsoup合作? 我的选择尝试(不工作,选择强标签内的完整内容): HTML: