2016-12-02 2 views
0

Parameter übergeben I bu mit den folgenden Anmeldeinformationen eine Benutzeranmeldung zu erstellen versuchen. Ich habe eine URL vom Server bekommen, kann aber die Post-Methode nicht verwenden. Bitte gib mir ein Code-Snippet für mich.Wie post-Methode für die Anmeldung verwenden und in android

Vielen Dank im Voraus.

Parameter übergeben werden: "user_name": "8013977", "user_pass": "8013977"

Mein Code-Schnipsel:

public class LoginActivity extends AppCompatActivity implements View.OnClickListener{ 

public static final String LOGIN_URL = "http://xxxxxxxx:8080/hanwha/player/login.on"; 

public static final String KEY_USERNAME="user_name"; 
public static final String KEY_PASSWORD="user_pass"; 

private EditText editTextUsername; 
private EditText editTextPassword; 
private Button buttonLogin; 

private String username; 
private String password ; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    editTextUsername = (EditText) findViewById(R.id.editTextUsername); 
    editTextPassword = (EditText) findViewById(R.id.editTextPassword); 

    buttonLogin = (Button) findViewById(R.id.buttonLogin); 

    buttonLogin.setOnClickListener(this); 
} 


private void userLogin() { 

    username = editTextUsername.getText().toString(); 

    Log.e(KEY_USERNAME , username); 

    password ="8013977"; 
    Log.e(KEY_PASSWORD , password); 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Log.e("eee", "response: " + response); 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(LoginActivity.this,error.toString(),Toast.LENGTH_LONG).show(); 
       } 
      }){ 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      Map<String,String> params = new HashMap<String,String>(); 
      params.put("user_name","8013977"); 
      params.put("user_pass","8013977"); 
      return params ; 
     } 
    }; 

    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 
} 

private void openProfile(){ 
    Intent intent = new Intent(this, ActivityUserProfile.class); 
    intent.putExtra(KEY_USERNAME, username); 
    startActivity(intent); 
} 

@Override 
public void onClick(View v) { 
    userLogin(); 
} 

}

+0

erhalten Sie eine Fehlermeldung, wenn Sie versuchen, diesen Code auszuführen? – cokceken

+0

ja in postdata String, ich targetgraduate dort sind immer error.Instaed davon, wie meine Anmeldeinformationen verwenden als Parameter – Mounika

+0

@Mounika warum Sie Volley Bibliothek nicht –

Antwort

2

Sie diesen Code versuchen können

BasicNameValuePair _id = new BasicNameValuePair(
      "id", id); 

    List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>(); 
    nameValuePairList.add(_id); 
    JSONObject jobj = JSONfunctions.getPostUrl(yourUrl, nameValuePairList); 

public static JSONObject getPostUrl(String url, 
     List<NameValuePair> nameValuePairList) { 
    JSONObject jObject = null; 
    HttpClient httpClient = new DefaultHttpClient(); 


    // HttpPost argument 
    HttpPost httpPost = new HttpPost(url); 

    try { 
     . 
     UrlEncodedFormEntity urlEncodedFormEntity = new UrlEncodedFormEntity(
       nameValuePairList); 


     httpPost.setEntity(urlEncodedFormEntity); 

     try { 

      HttpResponse httpResponse = httpClient.execute(httpPost); 


      InputStream inputStream = httpResponse.getEntity().getContent(); 

      InputStreamReader inputStreamReader = new InputStreamReader(
        inputStream); 

      BufferedReader bufferedReader = new BufferedReader(
        inputStreamReader); 

      StringBuilder stringBuilder = new StringBuilder(); 

      String bufferedStrChunk = null; 

      while ((bufferedStrChunk = bufferedReader.readLine()) != null) { 
       stringBuilder.append(bufferedStrChunk); 
      } 
      try { 
       jObject = new JSONObject(stringBuilder.toString()); 
      } catch (Exception e) { 
       // TODO: handle exception 
      } 

     } catch (ClientProtocolException cpe) { 

      cpe.printStackTrace(); 
     } catch (IOException ioe) { 

      ioe.printStackTrace(); 
     } 

    } catch (UnsupportedEncodingException uee) { 
     // System.out 
     // .println("An Exception given because of UrlEncodedFormEntity argument :" 
     // + uee); 
     // uee.printStackTrace(); 
    } 
    return jObject; 
} 
+0

httppost ist veraltet, also bekomme ich nicht – Mounika

+0

Sie können versuchen URL URL = neue URL ("http://www.android.com/"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); try { InputStream in = neuer BufferedInputStream (urlConnection.getInputStream()); LeseStream (in); } schließlich { urlConnection.disconnect(); } – Vadivel

+0

ja das ist, was ich gepostet habe, aber wie diese Parameter in meinem Code-Snippet übergeben werden, bitte geben Sie mir einen Vorschlag – Mounika

0

Ich benutze diese Login-Funktion, mit POST, implementiert Volley

private void login() { 
     loading = ProgressDialog.show(context, null, "Authenticating.Please wait...",true,true); 
     StringRequest strReq = new StringRequest(Request.Method.POST, 
       "your login url", new Response.Listener<String>() { 

      @Override 
      public void onResponse(String response) { 
       Log.e(TAG, "response: " + response); 

       try { 
        JSONObject obj = new JSONObject(response); 

        // check for error flag 
        if (obj.getString("error").equals("false")) { 
         // user successfully logged in 
         loading.dismiss(); 
         JSONObject userObj = obj.getJSONObject("user"); 
         String id=userObj.getString("requestor_id"); 
         String nam= userObj.getString("name"); 
         String ema=userObj.getString("email"); 
         User user = new User(id,nam,ema); 
         // storing user in shared preferences 
         MyApplication.getInstance().getPrefManager().storeUser(user); 
         if(myPreferenceManager.isFirstLaunch()){ 
          reRegisterGCM(nam,ema); 
          myPreferenceManager.setIsFirstLaunch(false); 
         } 
         startActivity(new Intent(getApplicationContext(), MapsActivity.class)); 
         finish(); 

        } else { 
         // login error - simply toast the message 
         loading.dismiss(); 
         Toast.makeText(getApplicationContext(), "" + obj.getJSONObject("error").getString("message"), Toast.LENGTH_LONG).show(); 
        } 

       } catch (JSONException e) { 
        Log.e(TAG, "json parsing error: " + e.getMessage()); 
        Toast.makeText(getApplicationContext(), "Json parse error: " + e.getMessage(), Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       NetworkResponse networkResponse = error.networkResponse; 
       loading.dismiss(); 
       Log.e(TAG, "Volley error: " + error.getMessage() + ", code: " + networkResponse+" and "+error.getMessage()); 
       Toast.makeText(getApplicationContext(), "Volley error: " + error.getMessage(), Toast.LENGTH_SHORT).show(); 
      } 
     }) { 

      @Override 

      public Map<String, String> getParams() throws AuthFailureError { 
       Map<String, String> params = new HashMap<>(); 
       params.put("user_name","8013977"); 
       params.put("user_pass","8013977"); 

       Log.e(TAG, "params: " + params.toString()); 
       return params; 
      } 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       Map<String,String> params = new HashMap<String, String>(); 
       params.put("Content-Type","application/x-www-form-urlencoded"); 
       return params; 
      } 
     }; 
     //Adding request to request queue 
     MyApplication.getInstance().addToRequestQueue(strReq); 
    } 
+0

Bin mit Volley aber bekomme falsche Antwort, bitte sagen Sie mir, was jetzt zu tun ist – Mounika

+0

Antwort: {"result_code": " US02E500 "," result_msg ":" Unerwartetes Zeichen ('u' (Code 117)): erwartet einen gültigen Wert (Zahl, String, Array, Objekt, 'wahr', 'falsch' oder 'null') \ n bei [Quelle : [email protected]; line: 1, spalte: 2] "} – Mounika

+0

@Mounika fügen Sie diese Methode in Ihrem Volley, wie in meinem Code – Mushirih

0

ich noch vorschlagen, dass Sie Volley-Bibliothek zu benutzen, aber wie Sie sagen, es ist sehr dringend Sie Name-Wert-Paar für die Buchung Parameter verwenden können. Sie können den folgenden Code verwenden:

HttpPost httppost; 
StringBuffer buffer; 
HttpResponse httpResponse; 
HttpClient httpclient; 
List<NameValuePair> nameValuePairs; 

class task extends AsyncTask<String, String, Void>{ 

     @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       // show progress dialog 
      } 

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

      try { 
       httpclient = new DefaultHttpClient(); 
       ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
       httppost = new HttpPost("http://yourUrl"); 
       nameValuePairs = new ArrayList<NameValuePair>(2); 
       nameValuePairs.add(new BasicNameValuePair("user_name", "8013977")); 
       nameValuePairs.add(new BasicNameValuePair("user_pass":"8013977")); 
       httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
       res = httpclient.execute(httppost,responseHandler); 
       Log.e("Response",res); 

      } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      super.onPostExecute(result); 
        // update UI 
      } 
    } 
+0

gleiche Code verwendet, aber http Post ist ironischen, so dass ist null – Mounika

+0

@Mounika zeigt dann muss man Volley keine andere Möglichkeit als je meines Wissens nach links verwenden. –

+0

bitte meine editierten Nachricht überprüfen – Mounika

Verwandte Themen