我通过GET类型实现了示例改造2响应,我单击了按钮以获取响应,但是我有失败响应
public interface GithubServise {
@GET("/users/waadalkatheri/repos")
Call<ResponseBody> getGithub();
}
public void loadData (View view){
String LINK = "https://api.github.com";
Retrofit retrofit = new Retrofit.Builder ().baseUrl (LINK).build ();
GithubServise githubServise= retrofit.create (GithubServise.class);
githubServise.getGithub ().enqueue (new Callback<ResponseBody> () {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
try {
textView.setText (response.body ().string ());
Log.v ("TAG","yes");
} catch (IOException e) {
e.printStackTrace ();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
textView.setText ("no data");
}
});
}
Stacktrace
06-25 10:13:00.870 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: javax.net.ssl.SSLHandshakeException:
javax.net.ssl.SSLProtocolException: SSL handshake aborted:
ssl=0xb95dcb40: Failure in SSL library, usually a protocol error 06-25
10:13:00.874 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1
alert protocol version (external/openssl/ssl/s23_clnt.c:741
0x9dc27d4d:0x00000000) 06-25 10:13:00.886
2249-2249/com.example.waadalkatheri.retrofittraning W/System.err:
at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:436)
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:302)
06-25 10:13:00.898 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:270)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:162)
06-25 10:13:00.902 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
06-25 10:13:00.910 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
06-25 10:13:00.926 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
06-25 10:13:00.930 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
06-25 10:13:00.934 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
06-25 10:13:00.938 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147) 06-25 10:13:00.942 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32) 06-25
10:13:00.946 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856) 06-25 10:13:00.950 2249-2249/com.example.waadalkatheri.retrofittraning W/System.err:
Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted:
ssl=0xb95dcb40: Failure in SSL library, usually a protocol error 06-25
10:13:00.958 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1
alert protocol version (external/openssl/ssl/s23_clnt.c:741
0x9dc27d4d:0x00000000)
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native
Method) 06-25 10:13:00.962
2249-2249/com.example.waadalkatheri.retrofittraning W/System.err:
at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:395)
... 23 more 06-25 10:13:00.974 2249-2249/com.example.waadalkatheri.retrofittraning V/TAG: no data
06-25 10:13:00.978 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: javax.net.ssl.SSLHandshakeException:
javax.net.ssl.SSLProtocolException: SSL handshake aborted:
ssl=0xb95fea28: Failure in SSL library, usually a protocol error 06-25
10:13:00.986 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1
alert protocol version (external/openssl/ssl/s23_clnt.c:741
0x9dc27d4d:0x00000000) 06-25 10:13:01.002
2249-2249/com.example.waadalkatheri.retrofittraning W/System.err:
at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:436)
at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:302)
06-25 10:13:01.006 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:270)
06-25 10:13:01.010 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.RealConnection.connect(RealConnection.java:162)
06-25 10:13:01.014 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
06-25 10:13:01.018 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 06-25 10:13:01.022 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
06-25 10:13:01.026 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147) 06-25 10:13:01.030 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856)
Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb95fea28: Failure in SSL library, usually a protocol
error
error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version (external/openssl/ssl/s23_clnt.c:741
0x9dc27d4d:0x00000000)
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native
Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:395)
06-25 10:13:01.034 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: ... 23 more 06-25 10:13:02.586
2249-2249/com.example.waadalkatheri.retrofittraning V/TAG: no data
06-25 10:13:02.586 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: javax.net.ssl.SSLHandshakeException:
javax.net.ssl.SSLProtocolException: SSL handshake aborted:
ssl=0xb95dcb40: Failure in SSL library, usually a protocol error 06-25
10:13:02.590 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1
alert protocol version (external/openssl/ssl/s23_clnt.c:741
0x9dc27d4d:0x00000000) 06-25 10:13:02.594
2249-2249/com.example.waadalkatheri.retrofittraning W/System.err:
at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:436)
06-25 10:13:02.598 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:302)
06-25 10:13:02.602 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:270)
at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:162)
06-25 10:13:02.606 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
06-25 10:13:02.610 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
06-25 10:13:02.614 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) 06-25 10:13:02.618 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
06-25 10:13:02.622 2249-2249/com.example.waadalkatheri.retrofittraning
W/System.err: at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:147)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
at java.lang.Thread.run(Thread.java:856) 06-25 10:13:02.626 2249-2249/com.example.waadalkatheri.retrofittraning W/System.err:
Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted:
ssl=0xb95dcb40: Failure in SSL library, usually a protocol error
error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version (external/openssl/ssl/s23_clnt.c:741
0x9dc27d4d:0x00000000)
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native
Method)
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:395)
... 23 more
答案 0 :(得分:2)
与seen here一样,您的api https://api.github.com仅支持 Entry
。您的测试设备可能具有Android 16+版本,并且API级别16+支持 TLS 1.2
,但默认情况下未启用。对于20多个设备,默认情况下已启用。因此,对于 TLS 1.2
,创建一个自定义16<device<20
,并启用 SSLSocketFactory
,如下所示
TLS 1.2
TLSSocketFactory.java
现在创建一个 public class TLSSocketFactory extends SSLSocketFactory {
private SSLSocketFactory delegate;
public TLSSocketFactory() throws KeyManagementException, NoSuchAlgorithmException {
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, null, null);
delegate = context.getSocketFactory();
}
@Override
public String[] getDefaultCipherSuites() {
return delegate.getDefaultCipherSuites();
}
@Override
public String[] getSupportedCipherSuites() {
return delegate.getSupportedCipherSuites();
}
@Override
public Socket createSocket() throws IOException {
return enableTLSOnSocket(delegate.createSocket());
}
@Override
public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException {
return enableTLSOnSocket(delegate.createSocket(s, host, port, autoClose));
}
@Override
public Socket createSocket(String host, int port) throws IOException, UnknownHostException {
return enableTLSOnSocket(delegate.createSocket(host, port));
}
@Override
public Socket createSocket(String host, int port, InetAddress localHost, int localPort) throws IOException, UnknownHostException {
return enableTLSOnSocket(delegate.createSocket(host, port, localHost, localPort));
}
@Override
public Socket createSocket(InetAddress host, int port) throws IOException {
return enableTLSOnSocket(delegate.createSocket(host, port));
}
@Override
public Socket createSocket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException {
return enableTLSOnSocket(delegate.createSocket(address, port, localAddress, localPort));
}
private Socket enableTLSOnSocket(Socket socket) {
if(socket != null && (socket instanceof SSLSocket)) {
((SSLSocket)socket).setEnabledProtocols(new String[] {"TLSv1.2"});
}
return socket;
}
}
并添加OkHttpClient
进行这样的改装
client
答案 1 :(得分:0)
调用onFailure时,意味着该错误出在网络上。因此,连接中的某些内容无法正常工作,也许您已经检查了这些内容。
通过从移动设备(Chrome)上的浏览器执行相同的http请求,确保您可以连接互联网并且网址正确无误。
在清单中检查您是否已请求Internet许可:
uses-permission android:name =“ android.permission.INTERNET”
答案 2 :(得分:0)
尝试使用此代码使pojo类获得响应..
public class Owner{
@SerializedName("gists_url")
private String gistsUrl;
@SerializedName("repos_url")
private String reposUrl;
@SerializedName("following_url")
private String followingUrl;
@SerializedName("starred_url")
private String starredUrl;
@SerializedName("login")
private String login;
@SerializedName("followers_url")
private String followersUrl;
@SerializedName("type")
private String type;
@SerializedName("url")
private String url;
@SerializedName("subscriptions_url")
private String subscriptionsUrl;
@SerializedName("received_events_url")
private String receivedEventsUrl;
@SerializedName("avatar_url")
private String avatarUrl;
@SerializedName("events_url")
private String eventsUrl;
@SerializedName("html_url")
private String htmlUrl;
@SerializedName("site_admin")
private boolean siteAdmin;
@SerializedName("id")
private int id;
@SerializedName("gravatar_id")
private String gravatarId;
@SerializedName("node_id")
private String nodeId;
@SerializedName("organizations_url")
private String organizationsUrl;
public void setGistsUrl(String gistsUrl){
this.gistsUrl = gistsUrl;
}
public String getGistsUrl(){
return gistsUrl;
}
public void setReposUrl(String reposUrl){
this.reposUrl = reposUrl;
}
public String getReposUrl(){
return reposUrl;
}
public void setFollowingUrl(String followingUrl){
this.followingUrl = followingUrl;
}
public String getFollowingUrl(){
return followingUrl;
}
public void setStarredUrl(String starredUrl){
this.starredUrl = starredUrl;
}
public String getStarredUrl(){
return starredUrl;
}
public void setLogin(String login){
this.login = login;
}
public String getLogin(){
return login;
}
public void setFollowersUrl(String followersUrl){
this.followersUrl = followersUrl;
}
public String getFollowersUrl(){
return followersUrl;
}
public void setType(String type){
this.type = type;
}
public String getType(){
return type;
}
public void setUrl(String url){
this.url = url;
}
public String getUrl(){
return url;
}
public void setSubscriptionsUrl(String subscriptionsUrl){
this.subscriptionsUrl = subscriptionsUrl;
}
public String getSubscriptionsUrl(){
return subscriptionsUrl;
}
public void setReceivedEventsUrl(String receivedEventsUrl){
this.receivedEventsUrl = receivedEventsUrl;
}
public String getReceivedEventsUrl(){
return receivedEventsUrl;
}
public void setAvatarUrl(String avatarUrl){
this.avatarUrl = avatarUrl;
}
public String getAvatarUrl(){
return avatarUrl;
}
public void setEventsUrl(String eventsUrl){
this.eventsUrl = eventsUrl;
}
public String getEventsUrl(){
return eventsUrl;
}
public void setHtmlUrl(String htmlUrl){
this.htmlUrl = htmlUrl;
}
public String getHtmlUrl(){
return htmlUrl;
}
public void setSiteAdmin(boolean siteAdmin){
this.siteAdmin = siteAdmin;
}
public boolean isSiteAdmin(){
return siteAdmin;
}
public void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
public void setGravatarId(String gravatarId){
this.gravatarId = gravatarId;
}
public String getGravatarId(){
return gravatarId;
}
public void setNodeId(String nodeId){
this.nodeId = nodeId;
}
public String getNodeId(){
return nodeId;
}
public void setOrganizationsUrl(String organizationsUrl){
this.organizationsUrl = organizationsUrl;
}
public String getOrganizationsUrl(){
return organizationsUrl;
}
}
public class Response{
@SerializedName("stargazers_count")
private int stargazersCount;
@SerializedName("pushed_at")
private String pushedAt;
@SerializedName("subscription_url")
private String subscriptionUrl;
@SerializedName("language")
private String language;
@SerializedName("branches_url")
private String branchesUrl;
@SerializedName("issue_comment_url")
private String issueCommentUrl;
@SerializedName("labels_url")
private String labelsUrl;
@SerializedName("subscribers_url")
private String subscribersUrl;
@SerializedName("releases_url")
private String releasesUrl;
@SerializedName("svn_url")
private String svnUrl;
@SerializedName("id")
private int id;
@SerializedName("forks")
private int forks;
@SerializedName("archive_url")
private String archiveUrl;
@SerializedName("git_refs_url")
private String gitRefsUrl;
@SerializedName("forks_url")
private String forksUrl;
@SerializedName("statuses_url")
private String statusesUrl;
@SerializedName("ssh_url")
private String sshUrl;
@SerializedName("license")
private Object license;
@SerializedName("full_name")
private String fullName;
@SerializedName("size")
private int size;
@SerializedName("languages_url")
private String languagesUrl;
@SerializedName("html_url")
private String htmlUrl;
@SerializedName("collaborators_url")
private String collaboratorsUrl;
@SerializedName("clone_url")
private String cloneUrl;
@SerializedName("name")
private String name;
@SerializedName("pulls_url")
private String pullsUrl;
@SerializedName("default_branch")
private String defaultBranch;
@SerializedName("hooks_url")
private String hooksUrl;
@SerializedName("trees_url")
private String treesUrl;
@SerializedName("tags_url")
private String tagsUrl;
@SerializedName("private")
private boolean jsonMemberPrivate;
@SerializedName("contributors_url")
private String contributorsUrl;
@SerializedName("has_downloads")
private boolean hasDownloads;
@SerializedName("notifications_url")
private String notificationsUrl;
@SerializedName("open_issues_count")
private int openIssuesCount;
@SerializedName("description")
private Object description;
@SerializedName("created_at")
private String createdAt;
@SerializedName("watchers")
private int watchers;
@SerializedName("keys_url")
private String keysUrl;
@SerializedName("deployments_url")
private String deploymentsUrl;
@SerializedName("has_projects")
private boolean hasProjects;
@SerializedName("archived")
private boolean archived;
@SerializedName("has_wiki")
private boolean hasWiki;
@SerializedName("updated_at")
private String updatedAt;
@SerializedName("comments_url")
private String commentsUrl;
@SerializedName("stargazers_url")
private String stargazersUrl;
@SerializedName("git_url")
private String gitUrl;
@SerializedName("has_pages")
private boolean hasPages;
@SerializedName("owner")
private Owner owner;
@SerializedName("commits_url")
private String commitsUrl;
@SerializedName("compare_url")
private String compareUrl;
@SerializedName("git_commits_url")
private String gitCommitsUrl;
@SerializedName("blobs_url")
private String blobsUrl;
@SerializedName("git_tags_url")
private String gitTagsUrl;
@SerializedName("merges_url")
private String mergesUrl;
@SerializedName("downloads_url")
private String downloadsUrl;
@SerializedName("has_issues")
private boolean hasIssues;
@SerializedName("url")
private String url;
@SerializedName("contents_url")
private String contentsUrl;
@SerializedName("mirror_url")
private Object mirrorUrl;
@SerializedName("milestones_url")
private String milestonesUrl;
@SerializedName("teams_url")
private String teamsUrl;
@SerializedName("fork")
private boolean fork;
@SerializedName("issues_url")
private String issuesUrl;
@SerializedName("events_url")
private String eventsUrl;
@SerializedName("issue_events_url")
private String issueEventsUrl;
@SerializedName("assignees_url")
private String assigneesUrl;
@SerializedName("open_issues")
private int openIssues;
@SerializedName("watchers_count")
private int watchersCount;
@SerializedName("node_id")
private String nodeId;
@SerializedName("homepage")
private Object homepage;
@SerializedName("forks_count")
private int forksCount;
public void setStargazersCount(int stargazersCount){
this.stargazersCount = stargazersCount;
}
public int getStargazersCount(){
return stargazersCount;
}
public void setPushedAt(String pushedAt){
this.pushedAt = pushedAt;
}
public String getPushedAt(){
return pushedAt;
}
public void setSubscriptionUrl(String subscriptionUrl){
this.subscriptionUrl = subscriptionUrl;
}
public String getSubscriptionUrl(){
return subscriptionUrl;
}
public void setLanguage(String language){
this.language = language;
}
public String getLanguage(){
return language;
}
public void setBranchesUrl(String branchesUrl){
this.branchesUrl = branchesUrl;
}
public String getBranchesUrl(){
return branchesUrl;
}
public void setIssueCommentUrl(String issueCommentUrl){
this.issueCommentUrl = issueCommentUrl;
}
public String getIssueCommentUrl(){
return issueCommentUrl;
}
public void setLabelsUrl(String labelsUrl){
this.labelsUrl = labelsUrl;
}
public String getLabelsUrl(){
return labelsUrl;
}
public void setSubscribersUrl(String subscribersUrl){
this.subscribersUrl = subscribersUrl;
}
public String getSubscribersUrl(){
return subscribersUrl;
}
public void setReleasesUrl(String releasesUrl){
this.releasesUrl = releasesUrl;
}
public String getReleasesUrl(){
return releasesUrl;
}
public void setSvnUrl(String svnUrl){
this.svnUrl = svnUrl;
}
public String getSvnUrl(){
return svnUrl;
}
public void setId(int id){
this.id = id;
}
public int getId(){
return id;
}
public void setForks(int forks){
this.forks = forks;
}
public int getForks(){
return forks;
}
public void setArchiveUrl(String archiveUrl){
this.archiveUrl = archiveUrl;
}
public String getArchiveUrl(){
return archiveUrl;
}
public void setGitRefsUrl(String gitRefsUrl){
this.gitRefsUrl = gitRefsUrl;
}
public String getGitRefsUrl(){
return gitRefsUrl;
}
public void setForksUrl(String forksUrl){
this.forksUrl = forksUrl;
}
public String getForksUrl(){
return forksUrl;
}
public void setStatusesUrl(String statusesUrl){
this.statusesUrl = statusesUrl;
}
public String getStatusesUrl(){
return statusesUrl;
}
public void setSshUrl(String sshUrl){
this.sshUrl = sshUrl;
}
public String getSshUrl(){
return sshUrl;
}
public void setLicense(Object license){
this.license = license;
}
public Object getLicense(){
return license;
}
public void setFullName(String fullName){
this.fullName = fullName;
}
public String getFullName(){
return fullName;
}
public void setSize(int size){
this.size = size;
}
public int getSize(){
return size;
}
public void setLanguagesUrl(String languagesUrl){
this.languagesUrl = languagesUrl;
}
public String getLanguagesUrl(){
return languagesUrl;
}
public void setHtmlUrl(String htmlUrl){
this.htmlUrl = htmlUrl;
}
public String getHtmlUrl(){
return htmlUrl;
}
public void setCollaboratorsUrl(String collaboratorsUrl){
this.collaboratorsUrl = collaboratorsUrl;
}
public String getCollaboratorsUrl(){
return collaboratorsUrl;
}
public void setCloneUrl(String cloneUrl){
this.cloneUrl = cloneUrl;
}
public String getCloneUrl(){
return cloneUrl;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setPullsUrl(String pullsUrl){
this.pullsUrl = pullsUrl;
}
public String getPullsUrl(){
return pullsUrl;
}
public void setDefaultBranch(String defaultBranch){
this.defaultBranch = defaultBranch;
}
public String getDefaultBranch(){
return defaultBranch;
}
public void setHooksUrl(String hooksUrl){
this.hooksUrl = hooksUrl;
}
public String getHooksUrl(){
return hooksUrl;
}
public void setTreesUrl(String treesUrl){
this.treesUrl = treesUrl;
}
public String getTreesUrl(){
return treesUrl;
}
public void setTagsUrl(String tagsUrl){
this.tagsUrl = tagsUrl;
}
public String getTagsUrl(){
return tagsUrl;
}
public void setJsonMemberPrivate(boolean jsonMemberPrivate){
this.jsonMemberPrivate = jsonMemberPrivate;
}
public boolean isJsonMemberPrivate(){
return jsonMemberPrivate;
}
public void setContributorsUrl(String contributorsUrl){
this.contributorsUrl = contributorsUrl;
}
public String getContributorsUrl(){
return contributorsUrl;
}
public void setHasDownloads(boolean hasDownloads){
this.hasDownloads = hasDownloads;
}
public boolean isHasDownloads(){
return hasDownloads;
}
public void setNotificationsUrl(String notificationsUrl){
this.notificationsUrl = notificationsUrl;
}
public String getNotificationsUrl(){
return notificationsUrl;
}
public void setOpenIssuesCount(int openIssuesCount){
this.openIssuesCount = openIssuesCount;
}
public int getOpenIssuesCount(){
return openIssuesCount;
}
public void setDescription(Object description){
this.description = description;
}
public Object getDescription(){
return description;
}
public void setCreatedAt(String createdAt){
this.createdAt = createdAt;
}
public String getCreatedAt(){
return createdAt;
}
public void setWatchers(int watchers){
this.watchers = watchers;
}
public int getWatchers(){
return watchers;
}
public void setKeysUrl(String keysUrl){
this.keysUrl = keysUrl;
}
public String getKeysUrl(){
return keysUrl;
}
public void setDeploymentsUrl(String deploymentsUrl){
this.deploymentsUrl = deploymentsUrl;
}
public String getDeploymentsUrl(){
return deploymentsUrl;
}
public void setHasProjects(boolean hasProjects){
this.hasProjects = hasProjects;
}
public boolean isHasProjects(){
return hasProjects;
}
public void setArchived(boolean archived){
this.archived = archived;
}
public boolean isArchived(){
return archived;
}
public void setHasWiki(boolean hasWiki){
this.hasWiki = hasWiki;
}
public boolean isHasWiki(){
return hasWiki;
}
public void setUpdatedAt(String updatedAt){
this.updatedAt = updatedAt;
}
public String getUpdatedAt(){
return updatedAt;
}
public void setCommentsUrl(String commentsUrl){
this.commentsUrl = commentsUrl;
}
public String getCommentsUrl(){
return commentsUrl;
}
public void setStargazersUrl(String stargazersUrl){
this.stargazersUrl = stargazersUrl;
}
public String getStargazersUrl(){
return stargazersUrl;
}
public void setGitUrl(String gitUrl){
this.gitUrl = gitUrl;
}
public String getGitUrl(){
return gitUrl;
}
public void setHasPages(boolean hasPages){
this.hasPages = hasPages;
}
public boolean isHasPages(){
return hasPages;
}
public void setOwner(Owner owner){
this.owner = owner;
}
public Owner getOwner(){
return owner;
}
public void setCommitsUrl(String commitsUrl){
this.commitsUrl = commitsUrl;
}
public String getCommitsUrl(){
return commitsUrl;
}
public void setCompareUrl(String compareUrl){
this.compareUrl = compareUrl;
}
public String getCompareUrl(){
return compareUrl;
}
public void setGitCommitsUrl(String gitCommitsUrl){
this.gitCommitsUrl = gitCommitsUrl;
}
public String getGitCommitsUrl(){
return gitCommitsUrl;
}
public void setBlobsUrl(String blobsUrl){
this.blobsUrl = blobsUrl;
}
public String getBlobsUrl(){
return blobsUrl;
}
public void setGitTagsUrl(String gitTagsUrl){
this.gitTagsUrl = gitTagsUrl;
}
public String getGitTagsUrl(){
return gitTagsUrl;
}
public void setMergesUrl(String mergesUrl){
this.mergesUrl = mergesUrl;
}
public String getMergesUrl(){
return mergesUrl;
}
public void setDownloadsUrl(String downloadsUrl){
this.downloadsUrl = downloadsUrl;
}
public String getDownloadsUrl(){
return downloadsUrl;
}
public void setHasIssues(boolean hasIssues){
this.hasIssues = hasIssues;
}
public boolean isHasIssues(){
return hasIssues;
}
public void setUrl(String url){
this.url = url;
}
public String getUrl(){
return url;
}
public void setContentsUrl(String contentsUrl){
this.contentsUrl = contentsUrl;
}
public String getContentsUrl(){
return contentsUrl;
}
public void setMirrorUrl(Object mirrorUrl){
this.mirrorUrl = mirrorUrl;
}
public Object getMirrorUrl(){
return mirrorUrl;
}
public void setMilestonesUrl(String milestonesUrl){
this.milestonesUrl = milestonesUrl;
}
public String getMilestonesUrl(){
return milestonesUrl;
}
public void setTeamsUrl(String teamsUrl){
this.teamsUrl = teamsUrl;
}
public String getTeamsUrl(){
return teamsUrl;
}
public void setFork(boolean fork){
this.fork = fork;
}
public boolean isFork(){
return fork;
}
public void setIssuesUrl(String issuesUrl){
this.issuesUrl = issuesUrl;
}
public String getIssuesUrl(){
return issuesUrl;
}
public void setEventsUrl(String eventsUrl){
this.eventsUrl = eventsUrl;
}
public String getEventsUrl(){
return eventsUrl;
}
public void setIssueEventsUrl(String issueEventsUrl){
this.issueEventsUrl = issueEventsUrl;
}
public String getIssueEventsUrl(){
return issueEventsUrl;
}
public void setAssigneesUrl(String assigneesUrl){
this.assigneesUrl = assigneesUrl;
}
public String getAssigneesUrl(){
return assigneesUrl;
}
public void setOpenIssues(int openIssues){
this.openIssues = openIssues;
}
public int getOpenIssues(){
return openIssues;
}
public void setWatchersCount(int watchersCount){
this.watchersCount = watchersCount;
}
public int getWatchersCount(){
return watchersCount;
}
public void setNodeId(String nodeId){
this.nodeId = nodeId;
}
public String getNodeId(){
return nodeId;
}
public void setHomepage(Object homepage){
this.homepage = homepage;
}
public Object getHomepage(){
return homepage;
}
public void setForksCount(int forksCount){
this.forksCount = forksCount;
}
public int getForksCount(){
return forksCount;
}
}
之后就是改造对象类。
public class ApiClient {
private final static String BASE_URL = "https://api.github.com";
public static ApiClient apiClient;
private Retrofit retrofit = null;
public static ApiClient getInstance() {
if (apiClient == null) {
apiClient = new ApiClient();
}
return apiClient;
}
//private static Retrofit storeRetrofit = null;
public Retrofit getClient() {
return getClient(null);
}
private Retrofit getClient(final Context context) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient.Builder client = new OkHttpClient.Builder();
client.readTimeout(60, TimeUnit.SECONDS);
client.writeTimeout(60, TimeUnit.SECONDS);
client.connectTimeout(60, TimeUnit.SECONDS);
client.addInterceptor(interceptor);
client.addInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request request = chain.request();
return chain.proceed(request);
}
});
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client.build())
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit;
}
}
之后是用于api调用的make接口。
public interface ApiInterface {
@GET("/users/waadalkatheri/repos")
Call<Response> getdata();
}
在该api调用活动并获取数据之后。
ApiInterface apiInterface= ApiClient.getInstance().getClient().create(ApiInterface.class);
Call<Response> responseCall=apiInterface.getdata();
responseCall.enqueue(new Callback<Response>() {
@Override
public void onResponse(Call<Response> call, retrofit2.Response<Response> response) {
if (response.isSuccessful() && response.body()!=null && response!=null){
Toast.makeText(getApplicationContext(),"GetData"+response.body().getLanguage(),Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Response> call, Throwable t) {
Log.d("Errror",t.getMessage());
}
});