![](/img/trans.png)
[英]Issue configuring Spring web app(non-boot) with both oauth2 authorization code and client credential flow
[英]HttpUrlConnection - android app - oauth2 authorization with spring web service
我尝试从android应用程序连接我的spring rest服务。 我的代码不起作用。 我从以下教程中学习: http : //websystique.com/spring-security/secure-spring-rest-api-using-oauth2/
我尝试做到这一点:
“使用/ oauth / token上的HTTP POST,使用grant_type = password,并使用资源所有者凭据作为req-params,请求令牌[access + refresh]。此外,在Authorization标头中发送客户端凭据。POST http:// localhost:8080 / SpringSecurityOAuth2Example / oauth / token?grant_type = password&username = bill&password = abc123 “
我试图用另一种方式来做到这一点,而不是像本教程中那样,而是使用HttpURLConnection。 应该如何看待参数以提出适当的要求? 我在手机上模拟了它,并通过wifi与本地网络建立了连接。
try {
String plainClientCredentials="my-trusted-client:secret";
String base64ClientCredentials = new String(Base64.encodeBase64(plainClientCredentials.getBytes()));
URL urlObj = new URL("http://192.168.1.150:8080/Web_Maxim_Manager/oauth/token");
HttpURLConnection urlConn = (HttpURLConnection) urlObj.openConnection();
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
urlConn.setRequestProperty("Content-Type", "application/json");
urlConn.setRequestProperty("Accept", "application/json");
urlConn.setRequestMethod("POST");
urlConn.setRequestProperty("grant_type", "password");
urlConn.setRequestProperty("username", "bill");
urlConn.setRequestProperty("password", "abc123");
urlConn.setRequestProperty("Authorization", "Basic "+base64ClientCredentials);
urlConn.connect();
String response = urlConn.getResponseMessage();
userName.setText(response);
} catch (Exception e) {
userName.setText("uuuu");
e.printStackTrace();
}
W/System.err: java.net.SocketException: socket failed: EACCES (Permission denied)
W/System.err: at libcore.io.IoBridge.socket(IoBridge.java:623)
W/System.err: at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
W/System.err: at java.net.Socket.checkOpenAndCreate(Socket.java:687)
W/System.err: at java.net.Socket.setSoTimeout(Socket.java:541)
W/System.err: at com.android.okhttp.Connection.connect(Connection.java:1179)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:392)
W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:295)
W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106)
W/System.err: at runwithme.android.maxim.com.myapplication.activities.MainActivity.onCreate(MainActivity.java:43)
我使用邮递员应用程序测试了服务,并且可以正常工作。 因此,故障出在我的Android应用程序中。
解决了。 问题出在错误的设置应用程序权限上。 另一件事是:
urlConn.setRequestProperty("grant_type", "password");
urlConn.setRequestProperty("username", "bill");
urlConn.setRequestProperty("password", "abc123");
不应将其设置为请求参数,但应将其作为url的一部分。 权限应设置为:
<uses-permission android:name="android.permission.INTERNET"/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.