2016-10-28 3 views
0

Ich versuche, mit meinem Frühling Rest Service von Android App zu verbinden. Mein Code funktioniert nicht. Ich lerne aus der folgenden Anleitung: http://websystique.com/spring-security/secure-spring-rest-api-using-oauth2/HttpUrlConnection - Android App - Oauth2 Autorisierung mit Frühling Web-Service

und ich versuche, diesen Punkt zu tun:

„Fordern Sie Token [access + aktualisieren] HTTP POST an/oauth/Token, mit grant_type = Passwort und Ressourcen Besitzer Beglaubigungsschreiben als erf-params. Zusätzlich Clientanmeldeinformationen in Authorization-Header senden. POST http://localhost:8080/SpringSecurityOAuth2Example/oauth/token?grant_type=password&username=bill&password=abc123 "

ich es in der anderen Art und Weise zu tun versuchte, nicht wie im Tutorial aber mit HttpURLConnection. Wie sollten Parameter aussehen, um eine entsprechende Anfrage zu stellen? Ich simuliere es auf meinem Handy und es hat die Verbindung mit dem lokalen Netzwerk von 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) 

Ich testete Service mit Postman Apps und es funktioniert. Also, der Fehler ist in meiner Android App.

Antwort

0

Gelöst. Problem lag in den fehlerhaften Anwendungsrechten. Zusätzliche Sache ist das:

sollte nicht als Anfrage Parameter eingestellt werden, aber sie sollten Teil der URL sein. Berechtigungen sollten wie folgt festgelegt werden:

<uses-permission android:name="android.permission.INTERNET"/> 
Verwandte Themen