Java 无法从J2SE平台进行PUT和POST(RESTLET版本3.0-M1)
我正在与GWT和J2SE客户一起进行一个项目。GWT部分工作得很好,但是现在J2SE客户端出现了问题 “服务器了解请求实体的内容类型和 请求实体的语法正确,但无法处理 “包含的说明” “序列化表示必须具有以下媒体类型: 应用程序/x-java-serialized-object或此: 应用程序/x-java-serialized-object+xml” 此代码在几个月前/几个版本前正常工作。。。GET工作时,PUT和POST都会产生此错误这里怎么了? 这里有一个非常简单的测试用例 //共享接口Java 无法从J2SE平台进行PUT和POST(RESTLET版本3.0-M1),java,json,restlet,Java,Json,Restlet,我正在与GWT和J2SE客户一起进行一个项目。GWT部分工作得很好,但是现在J2SE客户端出现了问题 “服务器了解请求实体的内容类型和 请求实体的语法正确,但无法处理 “包含的说明” “序列化表示必须具有以下媒体类型: 应用程序/x-java-serialized-object或此: 应用程序/x-java-serialized-object+xml” 此代码在几个月前/几个版本前正常工作。。。GET工作时,PUT和POST都会产生此错误这里怎么了? 这里有一个非常简单的测试用例 //共享接口
public interface J2SeClientServerResourceInt
{
@Post("json")
public J2seStatusDto postJ2seStatus(J2seStatusDto pJ2seStatusDto);
}
//爪哇豆
public class J2seStatusDto implements Serializable
{
private static final long serialVersionUID = 6901448809350740172L;
private String mTest;
public J2seStatusDto()
{
}
public J2seStatusDto(String pTest)
{
setTest(pTest);
}
public String getTest()
{
return mTest;
}
public void setTest(String pTest)
{
mTest = pTest;
}
}
//服务器
public class J2seServerResource extends ClaireServerResource implements J2SeServerResourceInt
{
@Override
public J2seStatusDto postJ2seStatusDto(J2seStatusDto pJ2seStatusDto)
{
return pJ2seStatusDto;
}
}
//J2SE客户端
public class ClaireJsSeTestClient
{
public static void main(String[] args)
{
Reference lReference = new Reference("http://localhost:8888//rest/j2se");
ClientResource lClientResource = new ClientResource(lReference);
lClientResource.accept(MediaType.APPLICATION_JSON);
J2SeServerResourceInt lJ2SeServerResource = lClientResource.wrap(J2SeServerResourceInt.class);
J2seStatusDto lJ2seStatusDto = new J2seStatusDto("TEST");
J2seStatusDto lJ2seResultDto = lJ2SeServerResource.postJ2seStatusDto(lJ2seStatusDto);
}
}
//Maven J2Se客户端
<dependencies>
<dependency>
<groupId>org.restlet.jse</groupId>
<artifactId>org.restlet</artifactId>
<version>3.0-M1</version>
</dependency>
<dependency>
<groupId>org.restlet.jse</groupId>
<artifactId>org.restlet.ext.jackson</artifactId>
<version>3.0-M1</version>
</dependency>
</dependencies>
org.restlet.jse
org.restlet
3.0-M1
org.restlet.jse
org.restlet.ext.jackson
3.0-M1
//Maven GAE服务器
<dependency>
<groupId>org.restlet.gae</groupId>
<artifactId>org.restlet</artifactId>
<version>3.0-M1</version>
</dependency>
<dependency>
<groupId>org.restlet.gae</groupId>
<artifactId>org.restlet.ext.servlet</artifactId>
<version>3.0-M1</version>
</dependency>
<dependency>
<groupId>org.restlet.gae</groupId>
<artifactId>org.restlet.ext.jackson</artifactId>
<version>3.0-M1</version>
</dependency>
<dependency>
<groupId>org.restlet.gae</groupId>
<artifactId>org.restlet.ext.gwt</artifactId>
<version>3.0-M1</version>
</dependency>
<dependency>
<groupId>org.restlet.gwt</groupId>
<artifactId>org.restlet</artifactId>
<version>3.0-M1</version>
<scope>compile</scope>
</dependency>
org.restlet.gae
org.restlet
3.0-M1
org.restlet.gae
org.restlet.ext.servlet
3.0-M1
org.restlet.gae
org.restlet.ext.jackson
3.0-M1
org.restlet.gae
org.restlet.ext.gwt
3.0-M1
org.restlet.gwt
org.restlet
3.0-M1
编译
蒂埃里·博伊洛修复了我们的问题(错误)
由于GAE平台的限制(不支持分块编码),您必须首先指定缓冲请求实体
cr.setRequestEntityBuffering(true);
感谢restlet.com提供的强大支持在J2seServerResource中调试断点时,PUT请求到达服务器时负载为NULL,POST甚至没有到达服务器(并给出错误消息)。GET请求工作正常…使用Chrome REST控制台测试时,服务器工作正常,问题出在J2SE客户机上。。。从JSON切换到XML会得到相同的结果。。。