我需要使用标头获取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)
您的cred”对象未附加到请求中。在执行请求之前,将其添加到您的parent对象中。