Jaunt Webcrawler上的Java Android Studio空指针异常

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

我试图从网站上运行这个简单的Jaunt示例,但得到了一个空指针异常错误。我不知道该怎么办,因为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行上


这就是我得到代码的地方:

如果您未能首先连接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岁,正在为学校做一个项目。对不起,伙计,我离开电脑一段时间是为了吃晚饭,你能发布更多的代码吗?在您进行此尝试的地方,请粘贴完整的堆栈跟踪