3

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

4

3 回答 3

0

如果您未能先连接 HttpURLConnection,通常会在 Android 上出现此问题 - 或者如果您忘记将 Internet 权限添加到清单中,则可能会产生副作用

于 2018-03-20T08:07:46.703 回答
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 客户端构建器中首先添加网络拦截器,顺序很重要

于 2018-03-20T11:06:27.747 回答
-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" />
于 2018-03-20T12:30:04.273 回答