2017-12-04 17 views
1

私はプログラミングとAndroidを初めて使い始めました。これはアプリを初めてプログラミングしようとしましたが、すでにログインに悩まされています。ログインはサーバーに接続する必要があり、取得リクエストの助けを借りて、ログインデータ(ユーザー名)を確認するために使用できるjsonデータを取得します。アプリの使用を許可されているユーザーは既にデータベースに入っています。シンプルになっているはずです。このフォーラムでは、HTTPClientなどでしか解決策を見つけることができませんでしたが、それ以上はHTTPURLConnectionとは機能しません。私はLoginActivityテンプレートを使用しましたAsyncTaskのRESTによる単純なHTTPログイン

これは私のコードです(私はJSONデータを使う経験もありません)。これが私たちのJSONデータの構造です:

{ 
    "id": "1234", 
    "firstName": "xx", 
    "lastName": "xy", 
    "fullName": "xx xy" 
} 

public class UserLoginTask extends AsyncTask<String, Void, Boolean> { 

    private final String mEmail; 
    private final String mPassword; 

    UserLoginTask(String email, String password) { 
     mEmail = email; 
     mPassword = password; 
    } 

    @Override 
    protected Boolean doInBackground(String... params) { 

     final String REQUEST_METHOD = "GET"; 
     final int READ_TIMEOUT = 15000; 
     final int CONNECTION_TIMEOUT = 15000; 
     // attempt authentication against a network service. 
     //InputStream is; 


     URL url = null; 
     try { 
      String username = params[0]; 
      String password = params[1]; 
      String inputLine; 
      String result; 

      url = new URL("URL//"); 
      //Connection with database 
      urlConnection=(HttpURLConnection) url.openConnection(); 
      //Connect with database 
      //urlConnection.connect(); 
      //Open stream; 
      //is=urlConnection.getInputStream(); 

      //Set methods and timeouts 
      urlConnection.setRequestMethod(REQUEST_METHOD); 
      urlConnection.setReadTimeout(READ_TIMEOUT); 
      urlConnection.setConnectTimeout(CONNECTION_TIMEOUT); 

      //Connect to our URL 
      urlConnection.connect(); 

      //TODO 
      urlConnection.setRequestMethod("GET"); 
      urlConnection.setDoInput(true); 

      //Create a new InputStreamReader 
      InputStreamReader streamReader = new 
        InputStreamReader(urlConnection.getInputStream()); 
      //Create a new buffered reader and String Builder 
      BufferedReader reader = new BufferedReader(streamReader); 
      StringBuilder stringBuilder = new StringBuilder(); 

      //Check if the line we are reading is not null 
      while((inputLine = reader.readLine()) != null){ 
       stringBuilder.append(inputLine); 
      } 

      //Close our InputStream and Buffered reader 
      reader.close(); 
      streamReader.close(); 

      //Set our result equal to our stringBuilder 
      result = stringBuilder.toString(); 

      //Proceed in function of status code response 
      int status = urlConnection.getResponseCode(); 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    return false; 

     /*for (String credential : DUMMY_CREDENTIALS) { 
      String[] pieces = credential.split(":"); 
      if (pieces[0].equals(mEmail)) { 
       // Account exists, return true if the password matches. 
       return pieces[1].equals(mPassword); 
      } 
     } 

     // TODO: register the new account here. 
     return true;*/ 
    } 

    @Override 
    protected void onPostExecute(final Boolean success) { 
     mAuthTask = null; 
     showProgress(false); 

     if (success) { 
      finish(); 
     } else { 
      mPasswordView.setError(getString(R.string.error_incorrect_password)); 
      mPasswordView.requestFocus(); 
     } 
    } 

私は、HTTPサービスクラスでこれを持っている: 私は私のクラスのHTTPServiceでこれらのメソッドを持っている:どのように私はこれを使用することができますか?

プライベートHttpURLConnection setUpConnection(String url、Credentials credentials)throws IOException { URL reqUrl =新しいURL(url); HttpURLConnection urlConnection =(HttpURLConnection)reqUrl.openConnection();

if (credentials != null && !credentials.getPassword().isEmpty() && !credentials.getUsername().isEmpty()) { 
     urlConnection.setRequestProperty("Authorization", createBasicAuthString(credentials.getUsername(), credentials.getPassword())); 
    } 
    return urlConnection; 
} 


/** 
* Creates the String for the Authorization Header 
* 
* @param user 
* @param password 
* @return 
*/ 
private String createBasicAuthString(String user, String password) { 
    String notEncoded = user + ":" + password; 
    String encodedAuth = Base64.encodeToString(notEncoded.getBytes(), Base64.DEFAULT); 
    return "Basic " + encodedAuth; 
} 
+0

上記のコードを、その文字列を

JSONObject jsonObject = new JSONObject(Your_Sring_data); String id= jsonObject.getJsonString("id"); String firstName= jsonObject.getJsonString("firstName"); String lastName= jsonObject.getJsonString("lastName"); String fullName= jsonObject.getJsonString("fullName"); 

、このようにあなたのJSONデータを解析し、doInBackground()メソッドでは代わりにブール成功変数の戻り応答文字列と解析url =新しいURL( "URL //"); '???通常のURLを投稿してください。 – greenapps

+0

'urlConnection.setRequestMethod(" GET ");'すでにリクエストメソッドを設定しています。それを二度はしないでください。 – greenapps

+0

'urlConnection.setDoInput(true);'。それはあなたが.connect()ステートメントの前に行うべきことです。 – greenapps

答えて

0

`

関連する問題