LoginSignup
8
8

More than 5 years have passed since last update.

Volleyを使ってpatchメソッドを利用する方法

Last updated at Posted at 2014-04-29

Volley利用する際にはシングルトンで利用するため、こんな感じのクラスを用意していると思います

VolleySingleton.java
public class VolleySingleton {
    private static VolleySingleton mInstance = null;
    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;

    private VolleySingleton(){
        mRequestQueue = Volley.newRequestQueue(MyApplication.getAppContext());
    }

    public static VolleySingleton getInstance(){
        if(mInstance == null){
            mInstance = new VolleySingleton();
        }
        return mInstance;
    }

Volleyでpatchメソッドに投げると

com.android.volley.NoConnectionError: java.net.ProtocolException: Connection already established
at >com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:134)
at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:110)
Caused by: java.net.ProtocolException: Connection already established
at java.net.HttpURLConnection.setRequestMethod(HttpURLConnection.java:633)
at >com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:227)
at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:106)
at >com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:93)
... 1 more

ネットワークプロトコルが正しく実行できなかったよ的な例外が発生します。

対応としてはRequestQueueの作成にcom.android.volley.toolbox.HttpStackを利用します。

VolleySingleton.java
public class VolleySingleton {
    private static VolleySingleton mInstance = null;
    private RequestQueue mRequestQueue;
    private ImageLoader mImageLoader;

    private VolleySingleton(){
        String ua = "user_agent";
        HttpStack httpStack = new HttpClientStack(AndroidHttpClient.newInstance(ua));

        mRequestQueue = Volley.newRequestQueue(MyApplication.getAppContext(), httpStack);
    }

    public static VolleySingleton getInstance(){
        if(mInstance == null){
            mInstance = new VolleySingleton();
        }
        return mInstance;
    }

これでpatchメソッドのurlにリクエストしても例外が発生せずにレスポンスを取得することができます。

※ソース切り貼りしてるので動作確認してません

参考
http://stackoverflow.com/questions/22411475/android-volley-http-patch-request

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8