如何从Android应用程序连接到我的localhost Web服务器

时间:2016-11-08 03:25:28

标签: java android

但从 Android Emulator 连接到我的localhost网络服务器工作正常。 我使用OAUTH来保证安全性,并在Web服务器中使用Spring RESTful Web服务。

我用于连接配置的安卓程序:

    public static final String API_HOST = "http://192.168.x.x:8080/"; //this is my pc ip address, (test with 10.0.2.2 but no work)
    public static final String API_BASE_URI = API_HOST + "MyProject/api/v1/";
    public static final String API_OAUTH_URI = API_HOST + "MyProject/oauth/";
    public static final String API_CLIENT_ID = "abrer112";
    public static final String API_CLIENT_SECRET = "a12101!#*$JE4323";
    public static final int API_HTTP_STATUS_SUCCESS = 200;
    public static final int API_HTTP_STATUS_UNAUTHORISED = 401;
    public static final int API_HTTP_STATUS_BAD_REQUEST = 400;
    public static final int API_HTTP_STATUS_UNPROCESSABLE_ENTITY = 422;
    public static final String API_OAUTH_HEADER_AUTH_PREFIX = "Bearer ";

    // ROLES
    public static final String ROLE_ADMIN = "ADMIN";
    public static final String ROLE_MANAGER = "MANAGER";
    public static final String ROLE_USER = "USER";

服务器设置:
我的xml文件:

<!-- Protect API URIs with ROLES -->
    <sec:http pattern="/api/v1/**" create-session="never"
        entry-point-ref="oauthAuthenticationEntryPoint" auto-config="true"
        use-expressions="true">
        <sec:anonymous enabled="false" />
        <sec:intercept-url pattern="/api/v1/admin/**" access="hasRole('ADMIN')" />
        <sec:intercept-url pattern="/api/v1/manager/**"
            access="hasRole('MANAGER') or hasRole('ADMIN')" />
        <sec:intercept-url pattern="/api/v1/user/**"
            access="hasRole('USER') or hasRole('MANAGER') or hasRole('ADMIN')" />
        <sec:custom-filter ref="resourceServerFilter"
            before="PRE_AUTH_FILTER" />
        <sec:access-denied-handler ref="oauthAccessDeniedHandler" />
    </sec:http>

Java文件:例如:

@RestController
@RequestMapping("/user/passwords")
public class ChangePasswordController {

所有连接和设置都非常好,我可以始终从Android Studio Emulator连接此网络服务器,但无法从Android appAndroid Studio USB Devices.进行连接是否有我错过的内容?任何帮助表示赞赏。

注意:enter image description here可能重复?但我无法弄清楚解决方案。感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

如果您的服务器在桌面上运行,那么它不是本地主机服务器。本地主机服务器将在Android设备上运行。

您需要通过Android设备让您的服务器通过互联网路由。最简单的方法是将它们放在同一个wifi网络上,并确保您的wifi路由器不会阻止与该端口的连接。

答案 1 :(得分:-1)

在cmd上运行ipconfig,然后查找您的电脑的IPv4 address,这是您应该在应用中使用的IP