2017-12-29 50 views
0

私は、Win10でAndroid Studio 3.0.1で作成されたAndroidアプリから単純なVolleyリクエストを作成しようとしています。 API26のNexus 5XエミュレータでVolleyリクエストを実行すると、NullPointerExceptionがスローされます。Volley throw NurPointerExceptionインターフェイスメソッドwriteRequestHeaders()を呼び出す

同じ問題を抱えている他の人は見つかりませんでしたが、新しいプロジェクトをコピーし、アクティビティコードをコピーして貼り付けます。どんな助けもありがとう。ここで

は、スタックトレースです:

12-29 13:56:19.839 26070-26204/com.test.myapp E/Volley: [773] NetworkDispatcher.processRequest: Unhandled exception java.lang.NullPointerException: Attempt to invoke interface method 'void com.android.okhttp.internal.http.HttpStream.writeRequestHeaders(com.android.okhttp.Request)' on a null object reference 
     java.lang.NullPointerException: Attempt to invoke interface method 'void com.android.okhttp.internal.http.HttpStream.writeRequestHeaders(com.android.okhttp.Request)' on a null object reference 
    at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:593) 
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:471) 
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:407) 
    at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseMessage(HttpURLConnectionImpl.java:534) 
    at com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.trackResponse(TrackedHttpURLConnection.java:86) 
    at com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.tryTrackResponse(TrackedHttpURLConnection.java:101) 
    at com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.getResponseCode(TrackedHttpURLConnection.java:308) 
    at com.android.tools.profiler.support.network.httpurl.HttpURLConnection$.getResponseCode(HttpURLConnection$.java:92) 
    at com.android.volley.toolbox.HurlStack.executeRequest(HurlStack.java:99) 
    at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:131) 
    at com.android.volley.NetworkDispatcher.processRequest(NetworkDispatcher.java:120) 
    at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:87) 
12-29 13:56:19.846 26070-26070/com.test.myapp E/test: That didn't work! com.android.volley.VolleyError: java.lang.NullPointerException: Attempt to invoke interface method 'void com.android.okhttp.internal.http.HttpStream.writeRequestHeaders(com.android.okhttp.Request)' on a null object reference 

AndroidManifest.xmlには、インターネットのアクセス権を持っている、と私のbuild.gradleファイルが最新のバレーボールのライブラリに依存している:

dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
    implementation 'com.android.support:appcompat-v7:26.1.0' 
    implementation 'com.android.support.constraint:constraint-layout:1.0.2' 
    implementation 'com.android.volley:volley:1.1.0' 
    testImplementation 'junit:junit:4.12' 
    androidTestImplementation 'com.android.support.test:runner:1.0.1' 
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 
} 

孤独な活動がありボタンを押すとボレーがコードをコピーしてコードを貼り付けたボタンを使用するようになりました。Android Volley doc

package com.test.myapp; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.StringRequest; 
import com.android.volley.toolbox.Volley; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_subject); 
    } 

    private void makeRequest() { 
     RequestQueue queue = Volley.newRequestQueue(this); 
     String url ="http://www.google.com"; 

     // Request a string response from the provided URL. 
     StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         // Display the first 500 characters of the response string. 
         Log.d("test", "Response is: "+ response.substring(0,500)); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e("test","That didn't work! " + error); 
      } 
     }); 
     // Add the request to the RequestQueue. 
     queue.add(stringRequest); 
    } 

    public void buttonClick(View view) { 
     makeRequest(); 
    } 
} 

答えて

0

信じられないほどです。私はマニフェストの許可行の最後に迷いのあるスペースがあったことが分かります。 INTERNET権限の欠如についての苦情がなかったのはなぜ

<uses-permission android:name="android.permission.INTERNET "/> 

<uses-permission android:name="android.permission.INTERNET"/> 

されている必要があり、私は知りません。

0

お試しくださいhttps://gist.github.com/JakeWharton/5616899クラスを作成し、2番目のパラメータを渡します。動作するかどうかを確認します。

+0

その要点は古くなっている可能性があります。コードを実行しようとすると、 'client.open'の呼び出しが定義されていないと訴えました。 回避策を使用したくない場合は、可能な限りAndroidドキュメントで意図したとおりにVolleyライブラリを使用したいと考えています。 – tronman

関連する問題