无法将我的android应用程序连接到Heroku服务器
我正在使用改装连接到heroku服务器。MainActivity中我的改装对象和其他相关代码如下所示:无法将我的android应用程序连接到Heroku服务器,android,heroku,retrofit,okhttp,Android,Heroku,Retrofit,Okhttp,我正在使用改装连接到heroku服务器。MainActivity中我的改装对象和其他相关代码如下所示: public class MainActivity extends AppCompatActivity { private ApiService service; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSta
public class MainActivity extends AppCompatActivity {
private ApiService service;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OkHttpClient okHttpClient = new OkHttpClient();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://<my heroku app name>.herokuapp.com/")
.addConverterFactory(MoshiConverterFactory.create())
.client(okHttpClient)
.build();
service = retrofit.create(ApiService.class);
}
public ApiService getService() {
return service;
}
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true"><my heroku app name>.herokuapp.com</domain>
</domain-config>
</network-security-config>
public类MainActivity扩展了AppCompatActivity{
私人蜂房服务;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OkHttpClient OkHttpClient=新的OkHttpClient();
改装改装=新改装.Builder()
.baseUrl(“https://.herokuapp.com/")
.addConverterFactory(MoshiConverterFactory.create())
.客户(okHttpClient)
.build();
服务=改装.create(ApiService.class);
}
公共服务{
回程服务;
}
我正在检查是否能够实现服务器连接的代码如下所示(不过,我认为这部分还可以):
公共类主页扩展片段{
@可空
@凌驾
公共视图onCreateView(@NonNull layoutiner充气机,
@可为空的视图组容器,
@可为空的捆绑包savedInstanceState){
final FragmentHomepageBinding=FragmentHomepageBinding.充气(充气机、容器、假);
最终MainActivity MainActivity=(MainActivity)requireActivity();//铸造
Call Call=mainActivity.getService().getHome();
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
如果(!response.issusccessful()){
binding.tekstasB.setText(“代码:+response.Code());
返回;
}
ResponseBody result=response.body();
试一试{
Log.d(“LoginPage”,result.string());
具有约束力。Tekstatsb.setText(“改造工程”);
}捕获(IOE异常){
e、 printStackTrace();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
binding.tekstasB.setText(t.getMessage());
}
});
binding.listRecyclerFirst.setAdapter(new HorizontalListAdapter());
返回binding.getRoot();
}
}
另外,我的network_security_config.xml看起来像这样:
public class MainActivity extends AppCompatActivity {
private ApiService service;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OkHttpClient okHttpClient = new OkHttpClient();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://<my heroku app name>.herokuapp.com/")
.addConverterFactory(MoshiConverterFactory.create())
.client(okHttpClient)
.build();
service = retrofit.create(ApiService.class);
}
public ApiService getService() {
return service;
}
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true"><my heroku app name>.herokuapp.com</domain>
</domain-config>
</network-security-config>
.herokuapp.com
我的舱单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.<app name>">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:networkSecurityConfig="@xml/network_security_config"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
根据具体情况,如果使用http或https,我会收到以下错误消息
“网络安全配置不允许明文通信,如果是https,我只会得到”代码:404”
有人能告诉我这方面的方向吗