我是新來的Android工作室,我試圖從Github的API(例如https://api.github.com/users/froala),並顯示在我的應用程序請求API數據。高效的方式/正確的方法來檢索JSON數據
我不知何故應用做檢索來自API的JSON:
public class MainActivity extends AppCompatActivity {
private TextView tvData;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate: Starting.");
// Set up the ViewPager with the sections adapter
// Github tab
Button buttonHit = (Button) findViewById(R.id.buttonHit);
tvData = (TextView) findViewById(R.id.tvJsonItem);
buttonHit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new JSONTask().execute("https://api.github.com/users/froala");
}
});
}
public class JSONTask extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... params) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
// Pass in a String and convert to URL
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
// for reading data line by line
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer strBuffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
strBuffer.append(line);
}
// If we are able to get the data
String retreivedJson = strBuffer.toString();
JSONObject parentObject = new JSONObject(retreivedJson);
JsonReader jsonReader = new JsonReader(responseBody);
return retreivedJson;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
//cant close null
if (connection != null) {
// close both connection and the reader
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
tvData.setText(result);
}
}
}
在它看起來像:
現在我只需要使用這個來解析JSON 。但問題是,當我在JSON中使用不同的URL(如https://api.github.com/users/froala/repos)時,檢索JSON數據不起作用,並且在單擊按鈕時應用程序不顯示任何內容。這很奇怪,因爲/ users/id頁面和/ users/id/repos頁面都是JSON,看起來沒有什麼不同。我不知道爲什麼另一個不工作。
兩個問題:
- 我使用從API檢索JSON的正確方法?
- 爲什麼不與我的代碼執行工作的其他鏈接(https://api.github.com/users/froala/repos)?
請幫幫忙!我很困惑。
您可以使用json轉換java庫,如gson,jackson。有關第二個查詢的更多信息,請參閱http://www.vogella.com/tutorials/JavaLibrary-Gson/article.html – bond007
,此網址是正確的,但您面臨服務器端的一些錯誤,如403狀態碼。在restclient或postman中檢查相同的網址。並添加需要的標題發送成功的請求 – bond007
@ bond007你是什麼意思添加需要的標題?我對這個東西很陌生。你能解釋還是幫忙? – user6792790