Jaunt Webcrawler上的Java Android Studio Null Pointer异常

时间:2018-03-10 02:20:08

标签: java android browser web-scraping jaunt-api

我正在尝试从网站运行简单的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

3 个答案:

答案 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" />