Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接到android后端时出错_Android_Networking_Android Emulator_Google Pixel - Fatal编程技术网

连接到android后端时出错

连接到android后端时出错,android,networking,android-emulator,google-pixel,Android,Networking,Android Emulator,Google Pixel,我正在桌面上使用android仿真器。我在尝试连接到后端时遇到以下错误 java.net.UnknownHostException: Unable to resolve host "<my host url>": No address associated with hostname 我需要调查哪些可能的罪犯 这是注册活动的代码 public class SignInActivity extends AppCompatActivity { @Inject @Name

我正在桌面上使用android仿真器。我在尝试连接到后端时遇到以下错误

java.net.UnknownHostException: Unable to resolve host
"<my host url>": No address associated with hostname
我需要调查哪些可能的罪犯

这是注册活动的代码

public class SignInActivity extends AppCompatActivity {
    @Inject
    @Named("default")
    Retrofit retrofit;
    @BindView(R.id.username_text_input_layout)
    TextInputLayout usernameInputLayout;
    @BindView(R.id.password_input_layout)
    TextInputLayout passwordInputLayout;
    @Nullable
    @BindView(R.id.image_button)
    ImageView submitImageView;
    @BindView(R.id.forgot_password)
    TextView forgotPassword;
    @BindView(R.id.email_editext_sign_in)
    EditText emailEditTextSignIn;
    @BindView(R.id.password_editext_sign_in)
    EditText passwordEditTextSignIn;
    @BindView(R.id.card_view_sign_in)
    CardView cardViewSignIn;
    @BindView(R.id.card_view_sign_up)
    CardView cardViewSignUp;
    String emailText;
    private RestApi restApi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_in);
        ((MyApplication) getApplication()).getSigninUserNetworkComponent().inject(this);
        restApi = retrofit.create(RestApi.class);
        ButterKnife.bind(this);
        ActivityUtil.setCollapsedHintMiddle(usernameInputLayout, this);
        ActivityUtil.setCollapsedHintMiddle(passwordInputLayout, this);
    }


    @OnClick({R.id.forgot_password, R.id.image_button, R.id.card_view_sign_in, R.id.card_view_sign_up})
    public void onViewClicked(View view) {

        switch (view.getId()) {
            case R.id.forgot_password:
                Intent intent = new Intent(SignInActivity.this, AuthForgotPasswordActivity.class);
                startActivity(intent);
                overridePendingTransition(R.animator.swipe_up_animation, R.animator.no_change);
                break;
            case R.id.image_button:
                emailText = emailEditTextSignIn.getText().toString();
                if (emailText.isEmpty()) {
                    emailEditTextSignIn.setError("Email address cannot be empty");
                } else {
                    Toast.makeText(this, R.string.signed_toast_message, Toast.LENGTH_SHORT).show();
                    getSignInResponse(emailText);
                }
                break;
          }
    }


    private void getSignInResponse(String emailAddress) {
        restApi.getUser(emailAddress)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<Response<SignInModel>>() {
                    @Override
                    public void onCompleted() {
                        Log.e("", "onCompleted: ");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.e("", "onError: " + e);
                    }

                    @Override
                    public void onNext(Response<SignInModel> jsonObjectResponse) {
                        Log.e("", "onNext: " + jsonObjectResponse);
                        UIDisplayUtil.saveSignInUserDetails(SignInActivity.this, jsonObjectResponse.body());
                        Intent intentSubmit = new Intent(SignInActivity.this, SwipePageActivity.class);
                        startActivity(intentSubmit);
                    }
                });
    }

}
下面是strings.xml中的条目

<string name="backend_url">http://mywebsite.net</string>
http://mywebsite.net

对于模拟器,根据服务器的不同,可以使用以下配置:-

  • 本地计算机上的服务器:-10.0.2.2(表示本地主机 (从模拟器的角度)
  • 本地网络中计算机上的服务器:分配的IP地址 (在上述两种情况下,请确保仿真器连接到同一网络)
  • 如果您的服务托管在远程服务器上:-在这种情况下 必须具有预先确定的端点,必须使用该端点
如果上述解决方案失败,请使用不同的模拟器或物理设备尝试相同的方法

我假设您在这里提供的URL是一个占位符,并且您正在尝试放置您自己网站的URL,但是如果它是您正在使用的实际URL,则它似乎正在重定向到其他页面。如果重定向是一个问题,我建议放置网站的原始URL,而不是转发地址


我希望这有帮助。

尝试使用
IP地址
,看看是否有效,也请共享您的代码,以便我们可以查看。我尝试过了。还是给了我同样的错误。我已经提到它在模拟器的浏览器中工作,所以DNS解析不是问题。我有一个预定的公共ip,我正在使用它作为后端。后端可以通过模拟器上的chrome应用程序访问。我想使用桌面来运行android开发。我的笔记本电脑没有那么强大。
public class SignInActivity extends AppCompatActivity {
    @Inject
    @Named("default")
    Retrofit retrofit;
    @BindView(R.id.username_text_input_layout)
    TextInputLayout usernameInputLayout;
    @BindView(R.id.password_input_layout)
    TextInputLayout passwordInputLayout;
    @Nullable
    @BindView(R.id.image_button)
    ImageView submitImageView;
    @BindView(R.id.forgot_password)
    TextView forgotPassword;
    @BindView(R.id.email_editext_sign_in)
    EditText emailEditTextSignIn;
    @BindView(R.id.password_editext_sign_in)
    EditText passwordEditTextSignIn;
    @BindView(R.id.card_view_sign_in)
    CardView cardViewSignIn;
    @BindView(R.id.card_view_sign_up)
    CardView cardViewSignUp;
    String emailText;
    private RestApi restApi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sign_in);
        ((MyApplication) getApplication()).getSigninUserNetworkComponent().inject(this);
        restApi = retrofit.create(RestApi.class);
        ButterKnife.bind(this);
        ActivityUtil.setCollapsedHintMiddle(usernameInputLayout, this);
        ActivityUtil.setCollapsedHintMiddle(passwordInputLayout, this);
    }


    @OnClick({R.id.forgot_password, R.id.image_button, R.id.card_view_sign_in, R.id.card_view_sign_up})
    public void onViewClicked(View view) {

        switch (view.getId()) {
            case R.id.forgot_password:
                Intent intent = new Intent(SignInActivity.this, AuthForgotPasswordActivity.class);
                startActivity(intent);
                overridePendingTransition(R.animator.swipe_up_animation, R.animator.no_change);
                break;
            case R.id.image_button:
                emailText = emailEditTextSignIn.getText().toString();
                if (emailText.isEmpty()) {
                    emailEditTextSignIn.setError("Email address cannot be empty");
                } else {
                    Toast.makeText(this, R.string.signed_toast_message, Toast.LENGTH_SHORT).show();
                    getSignInResponse(emailText);
                }
                break;
          }
    }


    private void getSignInResponse(String emailAddress) {
        restApi.getUser(emailAddress)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber<Response<SignInModel>>() {
                    @Override
                    public void onCompleted() {
                        Log.e("", "onCompleted: ");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.e("", "onError: " + e);
                    }

                    @Override
                    public void onNext(Response<SignInModel> jsonObjectResponse) {
                        Log.e("", "onNext: " + jsonObjectResponse);
                        UIDisplayUtil.saveSignInUserDetails(SignInActivity.this, jsonObjectResponse.body());
                        Intent intentSubmit = new Intent(SignInActivity.this, SwipePageActivity.class);
                        startActivity(intentSubmit);
                    }
                });
    }

}
//todo:combine these two url feed and Football Data
@Singleton
@Provides
@Named("default")
public Retrofit getRetrofit(Gson gson) {
    return new Retrofit.Builder()
            .baseUrl(MyApplication.getContext().getString(R.string.backend_url))
            .client(okHttpClient)
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .addConverterFactory(new NullOnEmptyConverterFactory())
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build();

}
<string name="backend_url">http://mywebsite.net</string>