关于 javascript:什么是 android 用数组替换 $.ajax

What is android replacement for $.ajax with array

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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");
}
});

在 PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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的这个登录过程?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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;
}

进入活动

1
2
3
4
5
6
7
8
9
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 来处理您的网络请求。这是一个方便的入门指南:http://www.androidhive.info/2014/05/android-working-with-volley-library-1/