高效的方式/正确的方法来检索JSON数据
我是新来的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)?
请帮帮忙!我很困惑。
第三方库更好,然后通过数据手动迭代,但如果你不愿意去,通过这种方式,你可以按照此过程检索的结果,如果得到的数据是的JSONObject:
public void formatJSONObjectData(String results){
try {
JSONObject jsonObject = new JSONObject(results);
if(jsonObject.optString("login")!=null)
tvData.append(jsonObject.getString("login"));
if (jsonObject.optInt("id")!=null)
tvData.append(jsonObject.getString("id"));
if(jsonObject.optString("avatar_url")!=null)
tvData.append(jsonObject.getString("avatar_url"));
//you could accordingly retrieve the results from the jsonObject for a specfic key and append it to the TextView
}catch (JSONException jsonException){
Log.e("Error",jsonException.getMessage());
}
}
如果得到的数据是JSONArray那么你需要分析它以这样的方式
public void formatJSONArray(String results){
try {
JSONArray jsonArray = new JSONArray(results);
for(int i=0;i<jsonArray.length();i++){
JSONObject jsonObject=jsonArray.getJSONObject(i);
if(jsonObject.optString("name")!=null)
tvData.append(jsonObject.getString("name"));
if (jsonObject.optInt("id")!=null)
tvData.append(jsonObject.getString("id"));
if(jsonObject.optString("full_name")!=null)
tvData.append(jsonObject.getString("full_name"));
if(jsonObject.optJSONObject("owner")!=null){
JSONObject ownerObject=jsonObject.getJSONObject("owner");
if(ownerObject.optString("login")!=null)
tvData.append(ownerObject.getString("login"));
if (ownerObject.optInt("id")!=null)
tvData.append(ownerObject.getString("id"));
if(jsonObject.optString("avatar_url")!=null)
tvData.append(ownerObject.getString("avatar_url"));
}
}
}catch (JSONException jsonException){
}
}
呼叫功能,按您的结果数据从onPostExecute(..)
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
/* for JSONObject data*/
if(result!=null && !result.isEmpty())
formatJSONData(result)
/* for JSONArray data*/
if(result!=null && !result.isEmpty())
formatJSONArray(result)
}
谢谢。但是,我怎样才能使URL额外的头部工作? – user6792790
这是因为您在代码中使用的网址ie [/users/froala](https://api.github.com/users/froala)会返回一个JSONObject,而[/ users/froala/repos](https: //api.github.com/users/froala/repos)会返回一个数组,因此您必须通过JSON数组解析相应url的数据。由于您试图通过JSONObject解析来自第二个url的检索数据,因此它可能会引发异常,导致TextView中的数据为空。 –
我已经更新了我的答案。如果它满足您的需求,请检查一下。 –
-
您可以使用改造,并从URL中获取数据:
你可以参考:
https://www.androidhive.info/2016/05/android-working-with-retrofit-http-library/
您可以使用上述
与对象你的JSON字符串,我使用http://www.jsonschema2pojo.org/并创建对象:
-----------------------------------com.example.Example.java-----------------------------------
package com.example;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Example {
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("name")
@Expose
private String name;
@SerializedName("full_name")
@Expose
private String fullName;
@SerializedName("owner")
@Expose
private Owner owner;
@SerializedName("private")
@Expose
private Boolean _private;
@SerializedName("html_url")
@Expose
private String htmlUrl;
@SerializedName("description")
@Expose
private String description;
@SerializedName("fork")
@Expose
private Boolean fork;
@SerializedName("url")
@Expose
private String url;
@SerializedName("forks_url")
@Expose
private String forksUrl;
@SerializedName("keys_url")
@Expose
private String keysUrl;
@SerializedName("collaborators_url")
@Expose
private String collaboratorsUrl;
@SerializedName("teams_url")
@Expose
private String teamsUrl;
@SerializedName("hooks_url")
@Expose
private String hooksUrl;
@SerializedName("issue_events_url")
@Expose
private String issueEventsUrl;
@SerializedName("events_url")
@Expose
private String eventsUrl;
@SerializedName("assignees_url")
@Expose
private String assigneesUrl;
@SerializedName("branches_url")
@Expose
private String branchesUrl;
@SerializedName("tags_url")
@Expose
private String tagsUrl;
@SerializedName("blobs_url")
@Expose
private String blobsUrl;
@SerializedName("git_tags_url")
@Expose
private String gitTagsUrl;
@SerializedName("git_refs_url")
@Expose
private String gitRefsUrl;
@SerializedName("trees_url")
@Expose
private String treesUrl;
@SerializedName("statuses_url")
@Expose
private String statusesUrl;
@SerializedName("languages_url")
@Expose
private String languagesUrl;
@SerializedName("stargazers_url")
@Expose
private String stargazersUrl;
@SerializedName("contributors_url")
@Expose
private String contributorsUrl;
@SerializedName("subscribers_url")
@Expose
private String subscribersUrl;
@SerializedName("subscription_url")
@Expose
private String subscriptionUrl;
@SerializedName("commits_url")
@Expose
private String commitsUrl;
@SerializedName("git_commits_url")
@Expose
private String gitCommitsUrl;
@SerializedName("comments_url")
@Expose
private String commentsUrl;
@SerializedName("issue_comment_url")
@Expose
private String issueCommentUrl;
@SerializedName("contents_url")
@Expose
private String contentsUrl;
@SerializedName("compare_url")
@Expose
private String compareUrl;
@SerializedName("merges_url")
@Expose
private String mergesUrl;
@SerializedName("archive_url")
@Expose
private String archiveUrl;
@SerializedName("downloads_url")
@Expose
private String downloadsUrl;
@SerializedName("issues_url")
@Expose
private String issuesUrl;
@SerializedName("pulls_url")
@Expose
private String pullsUrl;
@SerializedName("milestones_url")
@Expose
private String milestonesUrl;
@SerializedName("notifications_url")
@Expose
private String notificationsUrl;
@SerializedName("labels_url")
@Expose
private String labelsUrl;
@SerializedName("releases_url")
@Expose
private String releasesUrl;
@SerializedName("deployments_url")
@Expose
private String deploymentsUrl;
@SerializedName("created_at")
@Expose
private String createdAt;
@SerializedName("updated_at")
@Expose
private String updatedAt;
@SerializedName("pushed_at")
@Expose
private String pushedAt;
@SerializedName("git_url")
@Expose
private String gitUrl;
@SerializedName("ssh_url")
@Expose
private String sshUrl;
@SerializedName("clone_url")
@Expose
private String cloneUrl;
@SerializedName("svn_url")
@Expose
private String svnUrl;
@SerializedName("homepage")
@Expose
private String homepage;
@SerializedName("size")
@Expose
private Integer size;
@SerializedName("stargazers_count")
@Expose
private Integer stargazersCount;
@SerializedName("watchers_count")
@Expose
private Integer watchersCount;
@SerializedName("language")
@Expose
private String language;
@SerializedName("has_issues")
@Expose
private Boolean hasIssues;
@SerializedName("has_projects")
@Expose
private Boolean hasProjects;
@SerializedName("has_downloads")
@Expose
private Boolean hasDownloads;
@SerializedName("has_wiki")
@Expose
private Boolean hasWiki;
@SerializedName("has_pages")
@Expose
private Boolean hasPages;
@SerializedName("forks_count")
@Expose
private Integer forksCount;
@SerializedName("mirror_url")
@Expose
private Object mirrorUrl;
@SerializedName("archived")
@Expose
private Boolean archived;
@SerializedName("open_issues_count")
@Expose
private Integer openIssuesCount;
@SerializedName("forks")
@Expose
private Integer forks;
@SerializedName("open_issues")
@Expose
private Integer openIssues;
@SerializedName("watchers")
@Expose
private Integer watchers;
@SerializedName("default_branch")
@Expose
private String defaultBranch;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public Owner getOwner() {
return owner;
}
public void setOwner(Owner owner) {
this.owner = owner;
}
public Boolean getPrivate() {
return _private;
}
public void setPrivate(Boolean _private) {
this._private = _private;
}
public String getHtmlUrl() {
return htmlUrl;
}
public void setHtmlUrl(String htmlUrl) {
this.htmlUrl = htmlUrl;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Boolean getFork() {
return fork;
}
public void setFork(Boolean fork) {
this.fork = fork;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getForksUrl() {
return forksUrl;
}
public void setForksUrl(String forksUrl) {
this.forksUrl = forksUrl;
}
public String getKeysUrl() {
return keysUrl;
}
public void setKeysUrl(String keysUrl) {
this.keysUrl = keysUrl;
}
public String getCollaboratorsUrl() {
return collaboratorsUrl;
}
public void setCollaboratorsUrl(String collaboratorsUrl) {
this.collaboratorsUrl = collaboratorsUrl;
}
public String getTeamsUrl() {
return teamsUrl;
}
public void setTeamsUrl(String teamsUrl) {
this.teamsUrl = teamsUrl;
}
public String getHooksUrl() {
return hooksUrl;
}
public void setHooksUrl(String hooksUrl) {
this.hooksUrl = hooksUrl;
}
public String getIssueEventsUrl() {
return issueEventsUrl;
}
public void setIssueEventsUrl(String issueEventsUrl) {
this.issueEventsUrl = issueEventsUrl;
}
public String getEventsUrl() {
return eventsUrl;
}
public void setEventsUrl(String eventsUrl) {
this.eventsUrl = eventsUrl;
}
public String getAssigneesUrl() {
return assigneesUrl;
}
public void setAssigneesUrl(String assigneesUrl) {
this.assigneesUrl = assigneesUrl;
}
public String getBranchesUrl() {
return branchesUrl;
}
public void setBranchesUrl(String branchesUrl) {
this.branchesUrl = branchesUrl;
}
public String getTagsUrl() {
return tagsUrl;
}
public void setTagsUrl(String tagsUrl) {
this.tagsUrl = tagsUrl;
}
public String getBlobsUrl() {
return blobsUrl;
}
public void setBlobsUrl(String blobsUrl) {
this.blobsUrl = blobsUrl;
}
public String getGitTagsUrl() {
return gitTagsUrl;
}
public void setGitTagsUrl(String gitTagsUrl) {
this.gitTagsUrl = gitTagsUrl;
}
public String getGitRefsUrl() {
return gitRefsUrl;
}
public void setGitRefsUrl(String gitRefsUrl) {
this.gitRefsUrl = gitRefsUrl;
}
public String getTreesUrl() {
return treesUrl;
}
public void setTreesUrl(String treesUrl) {
this.treesUrl = treesUrl;
}
public String getStatusesUrl() {
return statusesUrl;
}
public void setStatusesUrl(String statusesUrl) {
this.statusesUrl = statusesUrl;
}
public String getLanguagesUrl() {
return languagesUrl;
}
public void setLanguagesUrl(String languagesUrl) {
this.languagesUrl = languagesUrl;
}
public String getStargazersUrl() {
return stargazersUrl;
}
public void setStargazersUrl(String stargazersUrl) {
this.stargazersUrl = stargazersUrl;
}
public String getContributorsUrl() {
return contributorsUrl;
}
public void setContributorsUrl(String contributorsUrl) {
this.contributorsUrl = contributorsUrl;
}
public String getSubscribersUrl() {
return subscribersUrl;
}
public void setSubscribersUrl(String subscribersUrl) {
this.subscribersUrl = subscribersUrl;
}
public String getSubscriptionUrl() {
return subscriptionUrl;
}
public void setSubscriptionUrl(String subscriptionUrl) {
this.subscriptionUrl = subscriptionUrl;
}
public String getCommitsUrl() {
return commitsUrl;
}
public void setCommitsUrl(String commitsUrl) {
this.commitsUrl = commitsUrl;
}
public String getGitCommitsUrl() {
return gitCommitsUrl;
}
public void setGitCommitsUrl(String gitCommitsUrl) {
this.gitCommitsUrl = gitCommitsUrl;
}
public String getCommentsUrl() {
return commentsUrl;
}
public void setCommentsUrl(String commentsUrl) {
this.commentsUrl = commentsUrl;
}
public String getIssueCommentUrl() {
return issueCommentUrl;
}
public void setIssueCommentUrl(String issueCommentUrl) {
this.issueCommentUrl = issueCommentUrl;
}
public String getContentsUrl() {
return contentsUrl;
}
public void setContentsUrl(String contentsUrl) {
this.contentsUrl = contentsUrl;
}
public String getCompareUrl() {
return compareUrl;
}
public void setCompareUrl(String compareUrl) {
this.compareUrl = compareUrl;
}
public String getMergesUrl() {
return mergesUrl;
}
public void setMergesUrl(String mergesUrl) {
this.mergesUrl = mergesUrl;
}
public String getArchiveUrl() {
return archiveUrl;
}
public void setArchiveUrl(String archiveUrl) {
this.archiveUrl = archiveUrl;
}
public String getDownloadsUrl() {
return downloadsUrl;
}
public void setDownloadsUrl(String downloadsUrl) {
this.downloadsUrl = downloadsUrl;
}
public String getIssuesUrl() {
return issuesUrl;
}
public void setIssuesUrl(String issuesUrl) {
this.issuesUrl = issuesUrl;
}
public String getPullsUrl() {
return pullsUrl;
}
public void setPullsUrl(String pullsUrl) {
this.pullsUrl = pullsUrl;
}
public String getMilestonesUrl() {
return milestonesUrl;
}
public void setMilestonesUrl(String milestonesUrl) {
this.milestonesUrl = milestonesUrl;
}
public String getNotificationsUrl() {
return notificationsUrl;
}
public void setNotificationsUrl(String notificationsUrl) {
this.notificationsUrl = notificationsUrl;
}
public String getLabelsUrl() {
return labelsUrl;
}
public void setLabelsUrl(String labelsUrl) {
this.labelsUrl = labelsUrl;
}
public String getReleasesUrl() {
return releasesUrl;
}
public void setReleasesUrl(String releasesUrl) {
this.releasesUrl = releasesUrl;
}
public String getDeploymentsUrl() {
return deploymentsUrl;
}
public void setDeploymentsUrl(String deploymentsUrl) {
this.deploymentsUrl = deploymentsUrl;
}
public String getCreatedAt() {
return createdAt;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public String getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(String updatedAt) {
this.updatedAt = updatedAt;
}
public String getPushedAt() {
return pushedAt;
}
public void setPushedAt(String pushedAt) {
this.pushedAt = pushedAt;
}
public String getGitUrl() {
return gitUrl;
}
public void setGitUrl(String gitUrl) {
this.gitUrl = gitUrl;
}
public String getSshUrl() {
return sshUrl;
}
public void setSshUrl(String sshUrl) {
this.sshUrl = sshUrl;
}
public String getCloneUrl() {
return cloneUrl;
}
public void setCloneUrl(String cloneUrl) {
this.cloneUrl = cloneUrl;
}
public String getSvnUrl() {
return svnUrl;
}
public void setSvnUrl(String svnUrl) {
this.svnUrl = svnUrl;
}
public String getHomepage() {
return homepage;
}
public void setHomepage(String homepage) {
this.homepage = homepage;
}
public Integer getSize() {
return size;
}
public void setSize(Integer size) {
this.size = size;
}
public Integer getStargazersCount() {
return stargazersCount;
}
public void setStargazersCount(Integer stargazersCount) {
this.stargazersCount = stargazersCount;
}
public Integer getWatchersCount() {
return watchersCount;
}
public void setWatchersCount(Integer watchersCount) {
this.watchersCount = watchersCount;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public Boolean getHasIssues() {
return hasIssues;
}
public void setHasIssues(Boolean hasIssues) {
this.hasIssues = hasIssues;
}
public Boolean getHasProjects() {
return hasProjects;
}
public void setHasProjects(Boolean hasProjects) {
this.hasProjects = hasProjects;
}
public Boolean getHasDownloads() {
return hasDownloads;
}
public void setHasDownloads(Boolean hasDownloads) {
this.hasDownloads = hasDownloads;
}
public Boolean getHasWiki() {
return hasWiki;
}
public void setHasWiki(Boolean hasWiki) {
this.hasWiki = hasWiki;
}
public Boolean getHasPages() {
return hasPages;
}
public void setHasPages(Boolean hasPages) {
this.hasPages = hasPages;
}
public Integer getForksCount() {
return forksCount;
}
public void setForksCount(Integer forksCount) {
this.forksCount = forksCount;
}
public Object getMirrorUrl() {
return mirrorUrl;
}
public void setMirrorUrl(Object mirrorUrl) {
this.mirrorUrl = mirrorUrl;
}
public Boolean getArchived() {
return archived;
}
public void setArchived(Boolean archived) {
this.archived = archived;
}
public Integer getOpenIssuesCount() {
return openIssuesCount;
}
public void setOpenIssuesCount(Integer openIssuesCount) {
this.openIssuesCount = openIssuesCount;
}
public Integer getForks() {
return forks;
}
public void setForks(Integer forks) {
this.forks = forks;
}
public Integer getOpenIssues() {
return openIssues;
}
public void setOpenIssues(Integer openIssues) {
this.openIssues = openIssues;
}
public Integer getWatchers() {
return watchers;
}
public void setWatchers(Integer watchers) {
this.watchers = watchers;
}
public String getDefaultBranch() {
return defaultBranch;
}
public void setDefaultBranch(String defaultBranch) {
this.defaultBranch = defaultBranch;
}
}
----------------------------------- com.example.Owner.java- ----------------------------------
package com.example;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Owner {
@SerializedName("login")
@Expose
private String login;
@SerializedName("id")
@Expose
private Integer id;
@SerializedName("avatar_url")
@Expose
private String avatarUrl;
@SerializedName("gravatar_id")
@Expose
private String gravatarId;
@SerializedName("url")
@Expose
private String url;
@SerializedName("html_url")
@Expose
private String htmlUrl;
@SerializedName("followers_url")
@Expose
private String followersUrl;
@SerializedName("following_url")
@Expose
private String followingUrl;
@SerializedName("gists_url")
@Expose
private String gistsUrl;
@SerializedName("starred_url")
@Expose
private String starredUrl;
@SerializedName("subscriptions_url")
@Expose
private String subscriptionsUrl;
@SerializedName("organizations_url")
@Expose
private String organizationsUrl;
@SerializedName("repos_url")
@Expose
private String reposUrl;
@SerializedName("events_url")
@Expose
private String eventsUrl;
@SerializedName("received_events_url")
@Expose
private String receivedEventsUrl;
@SerializedName("type")
@Expose
private String type;
@SerializedName("site_admin")
@Expose
private Boolean siteAdmin;
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getAvatarUrl() {
return avatarUrl;
}
public void setAvatarUrl(String avatarUrl) {
this.avatarUrl = avatarUrl;
}
public String getGravatarId() {
return gravatarId;
}
public void setGravatarId(String gravatarId) {
this.gravatarId = gravatarId;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getHtmlUrl() {
return htmlUrl;
}
public void setHtmlUrl(String htmlUrl) {
this.htmlUrl = htmlUrl;
}
public String getFollowersUrl() {
return followersUrl;
}
public void setFollowersUrl(String followersUrl) {
this.followersUrl = followersUrl;
}
public String getFollowingUrl() {
return followingUrl;
}
public void setFollowingUrl(String followingUrl) {
this.followingUrl = followingUrl;
}
public String getGistsUrl() {
return gistsUrl;
}
public void setGistsUrl(String gistsUrl) {
this.gistsUrl = gistsUrl;
}
public String getStarredUrl() {
return starredUrl;
}
public void setStarredUrl(String starredUrl) {
this.starredUrl = starredUrl;
}
public String getSubscriptionsUrl() {
return subscriptionsUrl;
}
public void setSubscriptionsUrl(String subscriptionsUrl) {
this.subscriptionsUrl = subscriptionsUrl;
}
public String getOrganizationsUrl() {
return organizationsUrl;
}
public void setOrganizationsUrl(String organizationsUrl) {
this.organizationsUrl = organizationsUrl;
}
public String getReposUrl() {
return reposUrl;
}
public void setReposUrl(String reposUrl) {
this.reposUrl = reposUrl;
}
public String getEventsUrl() {
return eventsUrl;
}
public void setEventsUrl(String eventsUrl) {
this.eventsUrl = eventsUrl;
}
public String getReceivedEventsUrl() {
return receivedEventsUrl;
}
public void setReceivedEventsUrl(String receivedEventsUrl) {
this.receivedEventsUrl = receivedEventsUrl;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Boolean getSiteAdmin() {
return siteAdmin;
}
public void setSiteAdmin(Boolean siteAdmin) {
this.siteAdmin = siteAdmin;
}
}
而且使用设备的改进,例如:
Call<Example> call = apiService.getData(URL);
call.enqueue(new Callback<Example>() {
@Override
public void onResponse(Call<Example> call, Response<Example> response) {
Log.d(TAG, "response.body(): " + response.body().getExample());
}
@Override
public void onFailure(Call<Example> call, Throwable t) {
// Log error here since request failed
Log.e(TAG, t.toString());
}
});
我希望它能帮助你解决问题!像课程作业的改造
第一个示例是否使用HTTPUrlConnection? – user6792790
您可以使用json转换java库,如gson,jackson。有关第二个查询的更多信息,请参阅http://www.vogella.com/tutorials/JavaLibrary-Gson/article.html – bond007
,此网址是正确的,但您面临服务器端的一些错误,如403状态码。在restclient或postman中检查相同的网址。并添加需要的标题发送成功的请求 – bond007
@ bond007你是什么意思添加需要的标题?我对这个东西很陌生。你能解释还是帮忙? – user6792790