我有一个基于泽西岛的REST客户端和一个GET调用,定义如下:
调用client.get()后代码没有出来。在client.get()调用中遇到空指针异常,这是来自调用REST客户端的类的初始化逻辑:
学生.java :
public class Student {
private static RestClient client;
@SuppressWarnings("static-access")
public Student(Client client) {
this.client = new RestClient(client, "xyz");
}
public static RestClient getClient() {
return client;
}
public static void addStudent() throws Exception {
try {
String addStudentUri = "https://www.zebapi.com/api/v1/market/ticker-new/btc/inr";
ClientResponse js_response = getClient().get(URI.create(addStudentUri));
String s = js_response.getEntity(String.class);
System.out.println(s);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) {
try {
addStudent();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
RestClient.java
public class RestClient {
private Client client;
private String randomHeader = "";
public RestClient(Client jerseyClient) {
this.client = jerseyClient;
}
public RestClient(Client jerseyClient, String random) {
this.client = jerseyClient;
this.randomHeader = random;
}
public String getRandomHeader() {
return randomHeader;
}
public void setRandomHeader(String randomHeader) {
this.randomHeader = randomHeader;
}
public RestClient() {
}
public ClientResponse get(URI uri)
{
return client.resource(uri)
.get(ClientResponse.class);
}
public ClientResponse post(URI uri)
{
return client.resource(uri)
.type(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.post(ClientResponse.class);
}
}
你能帮忙吗?
您从未初始化过客户端
,这就是您获得NPE的原因;您正在尝试使用尚未初始化的对象。
您应该做的是从所有方法和客户端
字段中删除所有静态
修饰符;除main
方法之外的所有修饰符。然后在main
方法中,创建一个新的学生
传入一个新的客户端
。然后使用该学生
实例调用add学生()
方法。
public class Student {
private RestClient client;
public Student(Client client) {
this.client = new RestClient(client, "xyz");
}
public RestClient getClient() {
return this.client;
}
public void addStudent() {}
public static void main(String...args) {
new Student(Client.create()).addStudent();
// or a more verbose way
Client jerseyClient = Client.create();
Student student = new Student(jerseyClient);
student.addStudent();
}
}
我将其标记为社区Wiki,因为实际上它应该被标记为什么是NullPointerExc的重复,以及我如何修复它?。is已成为Stack Overflow中的标准做法,当一个问题是关于一个易于修复的NullPointerExc的
时,我们应该将该问题关闭为该链接问题的重复。
< code > NullPointerException 通常很容易修复,如果它是由我们开发人员编写的代码引起的。能够检测并修复这个问题应该是小事一桩。因此,请查看相关问题,以便您下次能够自己处理此类问题。
首先,问题是当我从rest servlet调用ejb时,ejb总是null。 我在jersey spring 3.0.5中开发了一个rest web服务。以及用于服务的EJB3.1。 我已经在耳朵里打包了war和jar,所以我的应用程序看起来像(我使用maven作为依赖): 我想知道如何从war文件中的类调用jar文件中的服务。据我记忆,这是通过JNDI,我需要公开ejb apis?我应该怎么做?
问题内容: 有了JSR 311及其实现,我们有了一个强大的标准,可以通过REST公开Java对象。但是,在客户端,似乎缺少与SOAP的Apache Axis类似的东西-隐藏了Web服务并将数据透明地封送回Java对象的东西。 您如何创建Java RESTful客户端?使用HTTPConnection和手动解析结果?还是专业客户(例如Jersey或Apache CXR)? 问题答案: 这是一个古老的
拨打电话 拨打电话给 Skype 联系人。开始通话前,需先让支援PSP™版 Skype 的音频输入设备连接PSP™主机。 从联系人名单选择拨打对象 1. 进入 Skype 的选单画面后选择(联系人)。 2. 从联系人名单中选择电话的拨打对象。 可拨打电话给登入状态为(在线)等可通话状态的联系人。 开始呼叫后,会显示对方的名字或 Skype 账号。对方回复后即可开始通话。 提示 透过 Sky
问题内容: 我正在尝试拨打的电话不是使用特定号码,而是使用在变量中被调用的号码,或者至少告诉它在您的电话中提取该号码。这个在变量中被调用的数字是我使用解析器或从网站sql检索到的数字。我做了一个按钮,试图用一个函数调用存储在变量中的电话号码,但无济于事。一切都会帮助谢谢! 问题答案: 试一试: 假设电话号码在。 的返回Optional,因此使用可以确保它是(而不是)返回的。 对于Swift 3:
问题内容: 我如何查看Jersey生成并发送到服务器的实际请求?我在处理特定请求时遇到问题,运行Web服务器的同伴要求查看完整的请求(带有标头等)。 问题答案: 如果您仅使用Jersey客户端API,则LoggingFilter(客户端过滤器)应该可以帮助您: 否则,您可以使用其他LoggingFilter(容器过滤器)再次在服务器上记录请求和响应。
我已经通过以下方式将aws amplify集成到和android应用程序中https://docs.amplify.aws/lib/q/platform/android 在我的mac book pro中。 现在我签出相同的项目到另一台机器mac迷你。并试图运行。 我得到这个错误,不知道如何修复它。 尝试过,放大拉,放大配置,放大初始化。但是没有人能够解决这个问题。 提前感谢