Jaunt Webcrawler上的Java Android Studio空指针异常
我试图从网站上运行这个简单的Jaunt示例,但得到了一个空指针异常错误。我不知道该怎么办,因为Android Studio中很少支持使用Jaunt。这是我的密码:Jaunt Webcrawler上的Java Android Studio空指针异常,java,android,browser,web-scraping,jaunt-api,Java,Android,Browser,Web Scraping,Jaunt Api,我试图从网站上运行这个简单的Jaunt示例,但得到了一个空指针异常错误。我不知道该怎么办,因为Android Studio中很少支持使用Jaunt。这是我的密码: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setCon
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行上
这就是我得到代码的地方:如果您未能首先连接HttpURLConnection,则此问题通常会出现在Android上,如果您忘记将internet权限添加到清单中,则可能会产生副作用。首先确保您的url正确无误
http://jaunt-api.com/examples/signup.htm
这绝对是错误的url
然后
这里有一个NPE的解决方案类,您可以在OkHttp中使用
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);
};
}
}
公共类NullOnEmptyConverterFactory扩展Converter.Factory{
@凌驾
公共转换器响应BodyConverter(类型、注释[]注释、改装){
最终转换器委托=改装.nextResponseBodyConverter(此,类型,注释);
返回(转换器)主体->{
if(body.contentLength()==0)返回null;
返回委托。转换(正文);
};
}
}
首先,在OkHttp客户端生成器addNetworkInterceptor中,order matters尝试在您的
AndroidManifest.xml
中添加权限:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
<uses-permission
android:name="android.permission.INTERNET"
android:maxSdkVersion="18" />
您好,您能提供您在哪里学习本教程或从哪里获得此代码吗?@GastónSaillén@GastónSaillén请帮助我。。。我对Java还是个新手,今年才16岁,正在为学校做一个项目。对不起,伙计,我离开电脑一段时间是为了吃晚饭,你能发布更多的代码吗?在您进行此尝试的地方,请粘贴完整的堆栈跟踪