我正在尝试从网站运行简单的Jaunt示例,并且出现Null Pointer Exception错误。我不知道该怎么做,因为在Android Studio中使用Jaunt的支持很少。这是我的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
UserAgent userAgent = new UserAgent();
userAgent.visit("http://jaunt-api.com/examples/signup.htm");
}
catch(JauntException e){
System.out.println(e);
}
}
}
这是我运行时遇到的错误:
java.lang.NullPointerException: Attempt to invoke interface method 'void com.android.okhttp.internal.http.Transport.writeRequestHeaders(com.android.okhttp.Request)' on a null object reference
错误发生在userAgent.visit行。
这是我获得代码的地方:http://jaunt-api.com/jaunt-tutorial.htm
答案 0 :(得分:0)
如果您未能首先连接HttpURLConnection,则通常会在Android上出现此问题 - 如果您忘记向清单添加互联网权限,则可能会产生副作用
答案 1 :(得分:0)
首先确保您的网址正确
http://jaunt-api.com/examples/signup.htm
这绝对是错误的网址
然后
以下是您可以在OkHttp中使用的NPE的解决方法类
public class NullOnEmptyConverterFactory extends Converter.Factory {
@Override
public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
final Converter<ResponseBody, ?> delegate = retrofit.nextResponseBodyConverter(this, type, annotations);
return (Converter<ResponseBody, Object>) body -> {
if (body.contentLength() == 0) return null;
return delegate.convert(body);
};
}
}
首先在您的OkHttp客户端构建器addNetworkInterceptor中,订购事项
答案 2 :(得分:-1)
尝试在AndroidManifest.xml
:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<uses-permission
android:name="android.permission.INTERNET"
android:maxSdkVersion="18" />