在android httpurlconnection中添加请求标头,我正在传递用户名,密码,访问令牌,但我无法抓取数据

问题描述 投票:1回答:1

我需要使用标头获取JSON数据。使用我的代码,我没有得到任何错误。我已经以与JSON不同的方式传递数据,但没有得到所需的信息。为什么我无法检索数据?

public class HomeActivity extends AppCompatActivity {

public RecyclerView recyclerView;
public ArtistCustomAlbum adapter;
public List<ArtistAlbums> albumList = new ArrayList<ArtistAlbums>();


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


    new HomeActivity.AsyncFetch().execute();
}


private class AsyncFetch extends AsyncTask<String, String, String> {

    ProgressDialog pdLoading = new ProgressDialog(HomeActivity.this);
    HttpURLConnection conn;
    URL url = null;




    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        //this method will be running on UI thread
        pdLoading.setMessage("\tLoading...");
        pdLoading.setCancelable(false);
        pdLoading.show();
    }

    @Override
    protected String doInBackground(String... params) {


        try{
            URL url = new URL(AppConfig.URL_CATLOG);

        }
        catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return e.toString();
        }
        try{
            conn=(HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
            conn.setRequestProperty("Accept", "application/json");
          /*  //adding the request headers
            String encoding = DatatypeConverter.printBase64Binary("admin:Admin123".getBytes("UTF-8"));
            conn.setRequestProperty("Authorizat ion: Basic ",encoding);*/

            JSONObject cred = new JSONObject();
            JSONObject auth=new JSONObject();
            JSONObject parent=new JSONObject();
            cred.put("Username","<username>");
            cred.put("Password", "<password>");
            auth.put("USERACCESS", "<UID>");
            auth.put("ACCESSTOKEN", "<access-token>");
            parent.put("auth", auth);

            OutputStreamWriter wr= new OutputStreamWriter(conn.getOutputStream());
            wr.write(parent.toString());


        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }

        try{
            int response_code = conn.getResponseCode();

            // Check if successful connection made
            if (response_code == HttpURLConnection.HTTP_OK) {

                // Read data sent from server
                InputStream input = conn.getInputStream();
                BufferedReader reader = new BufferedReader(new InputStreamReader(input));
                StringBuilder result = new StringBuilder();
                String line;

                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }

                // Pass data to onPostExecute method
                return (result.toString());

            } else {

                return ("unsuccessful");
            }
        }catch (IOException e){
            e.printStackTrace();
            return e.toString();
        } finally {
            conn.disconnect();
        }
    }

    protected void onPostExecute(String result) {

        //this method will be running on UI thread

        pdLoading.dismiss();



        try {

            JSONArray jArray = new JSONArray(result);

            // Extract data from json and store into ArrayList as class objects
            for (int i = 0; i < jArray.length(); i++) {

                JSONObject json_data = jArray.getJSONObject(i);
                ArtistAlbums artistPic = new ArtistAlbums();

                artistPic.image=json_data.getString("profile_image");
                artistPic.name=json_data.getString("name");
                //   artistPic.nationality=json_data.getString("nationality");

                albumList.add(artistPic);

            }
            // Setup and Handover data to recyclerview

            recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
            recyclerView.setHasFixedSize(true);
            RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getApplicationContext(),2);
            recyclerView.setLayoutManager(layoutManager);
            recyclerView.setItemAnimator(new DefaultItemAnimator());
            adapter = new ArtistCustomAlbum(HomeActivity.this,albumList);
            //   recyclerView.setLayoutManager(new LinearLayoutManager(ProfileGrideActivity.this));
            recyclerView.setAdapter(adapter);


        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}}

//错误

04-03 11:59:44.196 2901-2901/? E/RecyclerView: No adapter attached; skipping layout
04-03 11:59:44.464 2901-2901/com.enkast.chetan.enkastartist22v W/System.err: org.json.JSONException: Value java.net.MalformedURLException of type java.lang.String cannot be converted to JSONArray
04-03 11:59:44.464 2901-2901/com.enkast.chetan.enkastartist22v W/System.err:     at org.json.JSON.typeMismatch(JSON.java:111)
04-03 11:59:44.464 2901-2901/com.enkast.chetan.enkastartist22v W/System.err:     at org.json.JSONArray.<init>(JSONArray.java:96)
04-03 11:59:44.464 2901-2901/com.enkast.chetan.enkastartist22v W/System.err:     at org.json.JSONArray.<init>(JSONArray.java:108)
04-03 11:59:44.464 2901-2901/com.enkast.chetan.enkastartist22v W/System.err:     at com.enkast.chetan.enkastartist22v.HomeActivity$AsyncFetch.onPostExecute(HomeActivity.java:382)
04-03 11:59:44.464 2901-2901/com.enkast.chetan.enkastartist22v W/System.err:     at com.enkast.chetan.enkastartist22v.HomeActivity$AsyncFetch.onPostExecute(HomeActivity.java:53)
04-03 11:59:44.464 2901-2901/com.enkast.chetan.enkastartist22v W/System.err:     at android.os.AsyncTask.finish(AsyncTask.java:660)
java android json xml
1个回答
1
投票
包含用户名和密码的

您的cred”对象未附加到请求中。在执行请求之前,将其添加到您的parent对象中。

© www.soinside.com 2019 - 2024. All rights reserved.