2016-10-28 8 views
0

アンドロイドアプリから私のスプリングレストサービスに接続しようとしています。私のコードは動作しません。私は、次のチュートリアルから学ぶ: http://websystique.com/spring-security/secure-spring-rest-api-using-oauth2/HttpUrlConnection - アンドロイドアプリ - 春のWebサービスでoauth2認証

、私はこの点をやろう:

は「/のOAuth /トークンにHTTP POSTを使用して、トークンのために、[アクセス+リフレッシュ]を掲載し、grant_type =パスワード、およびリソースで POST http://localhost:8080/SpringSecurityOAuth2Example/oauth/token?grant_type=password&username=bill&password=abc123 "

私はチュートリアルのようにではなく、HttpURLConnectionを使ってやりたかったのです。適切な要求をするためのパラメータの見方は? 私は自分の携帯電話でそれをシミュレートし、それは無線LANでローカルネットワークとの接続を持っています。

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) 

私は郵便配達のアプリでサービスをテストして動作します。だから、この欠陥は私のアンドロイドアプリにあります。

答えて

0

解決済み。問題は、設定されたアプリケーションのアクセス権に問題がありました。その他のことは次のとおりです。

urlConn.setRequestProperty("grant_type", "password"); 
    urlConn.setRequestProperty("username", "bill"); 
    urlConn.setRequestProperty("password", "abc123"); 

は、リクエストパラメータとして設定する必要はありませんが、それらはURLの一部である必要があります。 権限は次のように設定する必要があります。

<uses-permission android:name="android.permission.INTERNET"/> 
関連する問題