0

Volley を使用して URL から jsonarray を取得しようとしています。問題は私が得ることです

JsonException end of input at character 0

コードは次のとおりです。

JsonArrayRequest req = new JsonArrayRequest(Request.Method.POST, openMatchesUrl,
                 new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        Log.d("JSON", response.toString());
                        try {
                            for (int i = 0; i < response.length(); i++) {

                                //do stuff
                            }

                        } catch (JSONException e) {
                            e.printStackTrace();
                            Toast.makeText(getApplicationContext(),
                                    "Error: " + e.getMessage(),
                                    Toast.LENGTH_LONG).show();
                        }

                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(getApplicationContext(),
                                "onErrorResponse ongoing: "+error.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                }){     
        @Override
        protected Map<String, String> getParams() 
        {  
               //build params 
        }
    };
    // Add the request to the RequestQueue.
    queue.add(req);

問題は間違ったパラメータにあると考えていました。しかし、単純な文字列リクエストで試しました:

StringRequest req = new StringRequest(Request.Method.POST, openMatchesUrl,
                new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
                 Log.d("JSON", "resp: " +response);
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d("JSON", error.toString());
        }
    }){     
            @Override
            protected Map<String, String> getParams() 
            {  
                    //build params 
            }
        };

実際にはjsonを正しく返しています。例えば:

[{"roundid":4152,"numberofplayers":1,"dateevent":"2015-04-13 19:45:32.121124+02","playernames":"cat","turn":1,"codedboard":""},{"roundid":415‌​4,"numberofplayers":1,"dateevent":"2015-04-13 20:16:08.845409+02","playernames":"cat","turn":1,"codedboard":""},{"roundid":415‌​5,"numberofplayers":1,"dateevent":"2015-04-13 20:18:22.002411+02","playernames":"cat","turn":1,"codedboard":""}]

ここで何が問題なのですか?

4

2 に答える 2

0

暗闇での完全なショットですが、RSS パーサーでも同様のことが起こりました。私が使用していた URL は HTTP でしたが、HTTPS にリダイレクトされ、HttpsURLConnection ではなく HttpURLConnection を使用していたことがわかりました。

でも、私はAndroid Volleyを使っていなかったのでYMMV.

于 2015-04-14T12:46:35.297 に答える
0

私は最終的にこれを解決しました。ここでの問題は、何らかの理由で JSONArrayRequest が POST パラメータを取得していなかったことです。

だから私は手動でURLにパラメータを追加しました

于 2015-04-18T12:11:48.960 に答える