javax.ws.rs.client.Client l-来自本地文件的JSON



我有一个简单的REST客户端代码,像这样,调用一个服务:

String myUrl = "http://somehost/someservice";      
Client client = ClientBuilder.newBuilder().register(JacksonFeature.class).build();
MyClass result = client.target(myUrl)
.request(MediaType.APPLICATION_JSON)
.get(MyClass.class);
// work with result

一切正常。现在,我想使用存储在JSON文件中的一些预封装测试数据来执行处理代码。我希望我可以简单地使用File URL

String myUrl = "file://somepath/MyTest.json";

此操作失败,并产生此异常。

Exception in thread "main" javax.ws.rs.ProcessingException: class sun.net.www.protocol.ftp.FtpURLConnection cannot be cast to class java.net.HttpURLConnection (sun.net.www.protocol.ftp.FtpURLConnection and java.net.HttpURLConnection are in module java.base of loader 'bootstrap')
at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:309)
at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$1(JerseyInvocation.java:632)
at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:654)
at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:648)

如何告诉WS客户端将文件视为伪服务提供者?

正如Paul Samsothe所说,Client是一个HTTP客户端。对于我的目的,使用这样的代码就足够了

ObjectMapper mapper = new ObjectMapper();
MyClass metData = mapper.readValue(
Paths.get("sample.json").toFile(), 
MyClass.class
);

我可以在Facade后面隐藏HTTP和File之间的选择。