当前位置: 首页 > 知识库问答 >
问题:

Android Studio改版调用失败

敖硕
2023-03-14
<uses-permission android:name="android.permission.INTERNET"/>
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

public class TimeForIstanbul {
    @SerializedName("day_of_week")
    @Expose
    public Integer dayOfWeek;
    @SerializedName("utc_datetime")
    @Expose
    public String utcDatetime;
    @SerializedName("week_number")
    @Expose
    public Integer weekNumber;

    public Integer getDayOfWeek() {
        return dayOfWeek;
    }

    public void setDayOfWeek(Integer dayOfWeek) {
        this.dayOfWeek = dayOfWeek;
    }

    public String getUtcDatetime() {
        return utcDatetime;
    }

    public void setUtcDatetime(String utcDatetime) {
        this.utcDatetime = utcDatetime;
    }

    public Integer getWeekNumber() {
        return weekNumber;
    }

    public void setWeekNumber(Integer weekNumber) {
        this.weekNumber = weekNumber;
    }
}
import retrofit2.Call;
import retrofit2.http.GET;

public interface ApiService {
    @GET("Europe/Istanbul")
    Call<TimeForIstanbul> getTime();
}
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {

    private Retrofit retrofit;
    private ApiService apiService;
    private String BASE_URL = "http://worldtimeapi.org/api/timezone/";
    private Call<TimeForIstanbul> timeForIstanbulCall;
    private TimeForIstanbul timeForIstanbul;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setRetrofitSettings();
    }
    private void setRetrofitSettings(){
        retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        apiService = retrofit.create(ApiService.class);
        timeForIstanbulCall = apiService.getTime();
        timeForIstanbulCall.enqueue(new Callback<TimeForIstanbul>() {
            @Override
            public void onResponse(Call<TimeForIstanbul> call, Response<TimeForIstanbul> response) {
                if(response.isSuccessful()){
                    timeForIstanbul = response.body();
                    System.out.println(timeForIstanbul.getDayOfWeek());
                }
            }

            @Override
            public void onFailure(Call<TimeForIstanbul> call, Throwable t) {
                System.out.println("Error is ");
                System.out.println(t.toString());
            }
        });
    }
}
I/System.out: Error is 
    java.net.UnknownServiceException: CLEARTEXT communication to worldtimeapi.org not permitted by network security policy

在logcat上,所以它转到onfailure。我错过了什么?这里怎么了?这个例子的资源是这个视频

共有1个答案

郎健柏
2023-03-14

您必须将https与该API一起使用。变化:

private String BASE_URL = "http://worldtimeapi.org/api/timezone/";

private String BASE_URL = "https://worldtimeapi.org/api/timezone/";

如果您希望与api进行明文通信,您必须遵循Android文档中的步骤

 类似资料:
  • 我试图在android studio上使用java 1.7版,但不幸的是,它不能正常工作。。。如果在

  • 我已经使用向导生成了一个带有导航抽屉的应用程序。 当我选择“运行”“应用”或“调试”“应用”时,我会得到以下错误: 生成签名APK...选项工作,它创建的签名应用程序,可以安装在电话和工作。也可以使或重建项目在调试或发布中工作,没有错误。 null

  • 问题内容: 我正在尝试在Android Studio中使用Java版本1.7,但是很遗憾,它无法正常工作…如果将版本设置为 但是,当我使用带有字符串的声明语句时,出现了在Java 1.7中应该发生的错误,因此我是否需要设置其他设置? 问题答案: 不,没有设置可更改。Android SDK不支持完整的Java 7语法,因此您不能使用它。 请注意,最新的android版本支持java.nio。*(ja

  • 我正在分析android上的改型,并有一个关于回调与不使用它们的问题。我的印象是,回调只用于客户机可能希望的成功和失败响应。否则我会省略它。下面是一个没有回调的改型接口示例: 下面是一个带有回调的示例(我希望我是正确的): 我对两件事感到困惑:

  • 我想做一个应用程序,使用谷歌翻译API。自从我添加了 我的构建中的依赖项。gradle我有个错误: 现在必须显式声明注释处理器。发现编译类路径上的以下依赖项包含注释处理器。请将它们添加到annotationProcessor配置中。-自动值-1.2。jar(com.google.auto.value:auto-value:1.2)或者,设置android。defaultConfig。javaCom

  • 所以我得到了两个都在同一activity的视图。我正在使用但是,我无法调用在uiview中定义的公共方法... 我对AndroidStudio还很陌生,我在这里发现的只是不同的类,而不是观点。 非常感谢!