但从 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 app
和Android Studio USB Devices.
进行连接是否有我错过的内容?任何帮助表示赞赏。
答案 0 :(得分:1)
如果您的服务器在桌面上运行,那么它不是本地主机服务器。本地主机服务器将在Android设备上运行。
您需要通过Android设备让您的服务器通过互联网路由。最简单的方法是将它们放在同一个wifi网络上,并确保您的wifi路由器不会阻止与该端口的连接。
答案 1 :(得分:-1)
在cmd上运行ipconfig
,然后查找您的电脑的IPv4 address
,这是您应该在应用中使用的IP