如何在齐射中传递标头api密钥

时间:2019-07-18 02:13:07

标签: java json api android-volley api-key

我是android和volley的新手 我在忙于JSON路径 花了很多时间调试此代码,但不幸的是找不到该错误,有人可以帮助我找到此代码中的问题。我在活动页面上看不到数据

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.os.Bundle;

import com.android.volley.AuthFailureError;
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.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class dailyshop extends AppCompatActivity {
    private RecyclerView mRecycler;
    private cardAdapter mCardAdapter;
    private ArrayList<carditem> mCardList;
    private RequestQueue mRequestQueue;


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

        mRecycler = findViewById(R.id.recycler_view);
        mRecycler.setHasFixedSize(true);
        mRecycler.setLayoutManager(new LinearLayoutManager(this));

        mCardList = new ArrayList<>();

        mRequestQueue = Volley.newRequestQueue(this);
        parseJSON();
    }

    private void parseJSON(){
        String url = "https://fortnite-api.theapinetwork.com/store/get";
        final JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,

                new Response.Listener<JSONObject>()
                {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            JSONArray jsonArray = response.getJSONArray("data");
                            for (int i = 0; i < jsonArray.length(); i++){
                                JSONObject jsonObject = jsonArray.getJSONObject(i);

                                String itemName = jsonObject.getString("name");
                                String imageUrl = jsonObject.getString("background");
                                int vCount = jsonObject.getInt("cost");

                                mCardList.add(new carditem(imageUrl,itemName,vCount));
                            }

                            mCardAdapter = new cardAdapter(dailyshop.this, mCardList);
                            mRecycler.setAdapter(mCardAdapter);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                    }
                }
        ){
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String>  params = new HashMap<String, String>();
                params.put("Authorization", "mycode");
                return params;
            }
        };
        mRequestQueue.add(request);
    }
}

我尝试在同一个JSON子级中使用不带键的自定义API,并且有效

api json文件

{
   "lastUpdate":1563408000,
   "language":"en",
   "data":[
      {
         "itemId":"0ac5766-6f9355e-6575a4e-abaef79",
         "lastUpdate":1563408000,
         "store":{
            "isFeatured":false,
            "isRefundable":true,
            "cost":"500",
            "occurrences":1,
            "isNew":true
         },
         "item":{
            "name":"Glitter",
            "description":"",
            "type":"emote",
            "rarity":"rare",
            "costmeticId":null,
            "images":{
               "icon":"https://fortnite-public-files.theapinetwork.com/emote/a7eb82676b96bc1ff2129ee739d70d4a.png",
               "featured":null,
               "background":"https://fortnite-public-files.theapinetwork.com/image/0ac5766-6f9355e-6575a4e-abaef79.png",
               "information":"https://fortnite-public-files.theapinetwork.com/image/0ac5766-6f9355e-6575a4e-abaef79/item.png"
            },
            "backpack":{

            },
            "obtained_type":"vbucks",
            "ratings":{
               "avgStars":4.18,
               "totalPoints":614,
               "numberVotes":147
            }
         }
      },
      {
         "itemId":"d2e8284-fb06feb-ea3fbe3-c41fd8b",
         "lastUpdate":1563408000,
         "store":{
            "isFeatured":false,
            "isRefundable":true,
            "cost":"800",
            "occurrences":3,
            "isNew":false
         },
         "item":{
            "name":"Star Wand",
            "description":null,
            "type":"pickaxe",
            "rarity":"rare",
            "costmeticId":null,
            "images":{
               "icon":"https://fortnite-public-files.theapinetwork.com/pickaxe/e0907bc2a6058035c5bf96820da6c21f.png",
               "featured":null,
               "background":"https://fortnite-public-files.theapinetwork.com/image/d2e8284-fb06feb-ea3fbe3-c41fd8b.png",
               "information":"https://fortnite-public-files.theapinetwork.com/image/d2e8284-fb06feb-ea3fbe3-c41fd8b/item.png"
            },
            "backpack":{

            },
            "obtained_type":"vbucks",
            "ratings":{
               "avgStars":4.07,
               "totalPoints":789,
               "numberVotes":194
            }
         }
      },
      {
         "itemId":"eb00ead-bb56b45-05e52f8-2398d3a",
         "lastUpdate":1563408000,
         "store":{
            "isFeatured":false,
            "isRefundable":true,
            "cost":"300",
            "occurrences":1,
            "isNew":true
         },
         "item":{
            "name":"Scanline",
            "description":"",
            "type":"wrap",
            "rarity":"uncommon",
            "costmeticId":null,
            "images":{
               "icon":"https://fortnite-public-files.theapinetwork.com/wrap/5677d39e97ba5bf8d92e25bc520e7cc0.png",
               "featured":null,
               "background":"https://fortnite-public-files.theapinetwork.com/image/eb00ead-bb56b45-05e52f8-2398d3a.png",
               "information":"https://fortnite-public-files.theapinetwork.com/image/eb00ead-bb56b45-05e52f8-2398d3a/item.png"
            },
            "backpack":{

            },
            "obtained_type":"vbucks",
            "ratings":{
               "avgStars":4.82,
               "totalPoints":164,
               "numberVotes":34
            }
         }
      },
      {
         "itemId":"a784814-93b4ea3-3c26b6f-631fac7",
         "lastUpdate":1563408000,
         "store":{
            "isFeatured":false,
            "isRefundable":true,
            "cost":"500",
            "occurrences":1,
            "isNew":true
         }
      }
   ]
}

我需要JSON路径方面的帮助,如果我的代码有问题

1 个答案:

答案 0 :(得分:0)

尝试一下:

@Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        String credentials = "username" + ":" + "password";
        String base64EncodedCredentials = Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
        HashMap<String, String> headers = new HashMap<>();
        headers.put("Authorization", "Basic " + base64EncodedCredentials);
        return headers;
    }