什么是android替代$.Ajax与数组

What is android replacement for $.ajax with array

本文关键字:Ajax 数组 替代 android 什么      更新时间:2023-09-26

我有现有的jquery代码提交数组'array'作为json var在登录过程

var array1 = {
"command" : "login",
"username": $("#txt_username").val(),
"password": $("#txt_password").val(),
"remember":  $('#chk_remember').is(':checked')
};
$.ajax({
                url: 'functions.php',
                data : {'array': array1},
                dataType: 'json',
                type: 'POST',
                success: function(data) {
                    if  (data.success == 1 ){
                   $('#result').html("You have been logged in.</br>You will be     redirected to another page");
}
});

and at PHP

if (isset($_POST["array"])) {
$array = $_POST['array'];
switch ($array["command"]) {
    case "login" :
        if (DoLogin($array["username"], $array["password"]) == true) {
            $success = 1;
}
        else {
            $success = 0;
        }
        $arr = array("success" => $success, "redirect" => 1);
        echo json_encode($arr);
break;
}

如何处理这个登录过程从android?

public class Utils {
    public static String POST(String url, Login login){
        InputStream inputStream = null;
        String result = "";
        try {
            // 1. create HttpClient
            HttpClient httpclient = new DefaultHttpClient();
            // 2. make POST request to the given URL
            HttpPost httpPost = new HttpPost(url);
            String json = "";
            // 3. build jsonObject
            JSONObject jsonObject = new JSONObject();
            jsonObject.accumulate("command", login.command);
            jsonObject.accumulate("username", login.username);
            jsonObject.accumulate("password", login.password);
            jsonObject.accumulate("remember", login.remember);
            // 4. convert JSONObject to JSON to String
            json = jsonObject.toString();
            // ** Alternative way to convert Login object to JSON string usin Jackson Lib
            // ObjectMapper mapper = new ObjectMapper();
            // json = mapper.writeValueAsString(login);
            // 5. set json to StringEntity
            StringEntity se = new StringEntity(json);
            // 6. set httpPost Entity
            httpPost.setEntity(se);
            // 7. Set some headers to inform server about the type of the content
            httpPost.setHeader("Accept", "application/json");
            httpPost.setHeader("Content-type", "application/json");
            // 8. Execute POST request to the given URL
            HttpResponse httpResponse = httpclient.execute(httpPost);
            // 9. receive response as inputStream
            inputStream = httpResponse.getEntity().getContent();
            // 10. convert inputstream to string
            if(inputStream != null)
            result = convertInputStreamToString(inputStream);
            else
            result = "Did not work!";
            } catch (Exception e) {
            Log.d("InputStream", e.getLocalizedMessage());
        }
        // 11. return result
        return result;
    }
}
// Model login obj
public class Login {
    public String password;
    public String username;
    public String command;
    public boolean remember;
}

Login login = new Login();
// get reference to the views
login.username = (EditText) findViewById(R.id.user);
login.password = (EditText) findViewById(R.id.pass);
login.command = (EditText) findViewById(R.id.comm);
login.remember = ((CheckBox) findViewById(R.id.rem)).isChecked();
Utils.POST(stringUrl, login) // use AsynckTask for this http://stackoverflow.com/questions/8829135/android-http-request-asynctask

我建议使用Volley来处理你的web请求。这是一个方便的入门指南:http://www.androidhive.info/2014/05/android-working-with-volley-library-1/