Php mysql api json

Ở phần 1 mình đã hướng dẫn các bạn cách tạo dịch vụ web với php và mysql cho phương thức GET và cách phân tích cú pháp json trong android với trang bị thêm. Ở phần 2 mình sẽ hướng dẫn các bạn tạo dịch vụ web theo phương thức POST bằng php và mysql

Với phương thức GET thì dữ liệu được tìm thấy trên URL, còn phương thức POST thì hoàn toàn ngược lại, POST sẽ gửi dữ liệu qua một trường nhập trong android và được nhận dạng ở máy chủ thông qua tên (tên) của đầu vào đó. Chúng ta sẽ thực hiện tiếp với ví dụ ở phần 1, các trường nhập vào là tên, tuổi, lớp còn id thì mình đã thiết lập tự động tăng trên cơ sở dữ liệu nên có thể để null

frameborder="0" allow="gia tốc kế; tự động phát; phương tiện được mã hóa; con quay hồi chuyển; ảnh trong ảnh" cho phép toàn màn hình>

Create Web Service for POST method

Để máy chủ nhận được dữ liệu bạn gửi từ máy khách android, bạn phải viết phương thức POST bằng dịch vụ web để máy chủ có thể hiểu và nhận thông tin bạn gửi lên. Chúng ta sẽ viết tiếp vào trong file api. php ở phần 1

Thêm đoạn mã được đánh dấu dưới đây vào tệp api. php

= 1) {
    while ($row = mysql_fetch_assoc($resouter)) {
        $temparray[] = $row;
    }
}
echo json_encode($temparray);
end:
?>

Mình sẽ giải thích một chút ở đoạn code trên. Từ máy khách (Android) sẽ nhập vào 3 trường tên, tuổi, nclass và được nhận dạng ở máy chủ thông qua tên của 3 trường này theo phương thức POST

  • Hàm trim() được sử dụng trim($_POST[“name”]) giống như trong Android nó có tác dụng là xóa khoảng trắng của một chuỗi ký tự
  • Hàm empty() để kiểm tra xem chuỗi đó có trống không thì sẽ thông báo cho người dùng

Yêu cầu bạn có thẻ xử lý trong ứng dụng android hoặc ở phía máy chủ tùy chọn, miễn sao thấy hợp lý là được

Để kiểm tra chức năng POST vừa viết lúc nhổ chưa được, bạn sử dụng PostMan mình có giới thiệu ở phần 1 để kiểm tra xem nó có hoạt động không

Kiểm tra phương thức POST web serviceKiểm tra phương thức POST dịch vụ web

  1. Chọn phương thức POST và nhập vào địa chỉ đường dẫn
  2. Select tab Body –> select next x-www-form-urlencoded
  3. Nhập khóa và giá trị vào, khóa phải đúng theo tên của các trường nhận tại máy chủ
  4. Bấm Gửi để xem thông báo trả lại, để chắc chắn rằng có được hay không, bạn vào cơ sở dữ liệu để xem cho chắc chắn

Thông tin sinh viên vừa thêm hiển thị trong databaseThông tin sinh viên bổ sung được hiển thị trong cơ sở dữ liệu

Use method POST with Retrofit in Android

Để phía máy chủ nhận được thì bạn cần ĐĂNG ở máy khách, chúng ta tiếp tục sử dụng trang bị thêm để POST lên

package com.dev4u.ntc.webservice.webservice;

import com.dev4u.ntc.webservice.models.Student;

import java.util.List;

import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * IDE: Android Studio
 * Created by Nguyen Trong Cong  - NTCDE.COM
 * Name packge: com.dev4u.ntc.webservice.models
 * Name project: WebService
 * Date: 3/24/2017
 * Time: 17:52
 */

public interface APIService {
    // GET students from server
    // Server return json array
    @GET("/student_manager/api.php")
    Call> getStudents();

    // GET student by id student from server
    // Server return json object
    @GET("/student_manager/api.php")
    Call> getStudent(@Query("id") String id);

    // POST student from client to server
    // Server return string
    @FormUrlEncoded
    @POST("/student_manager/api.php")
    Call insertStudent(@Field("name") String name, @Field("age") int age, @Field("nclass") String nclass);
}

Ở client sẽ gửi lên name, age, nclass nên ta dùng @Field của retrofit và phải đi kèm với @FormUrlEncoded , sau khi POST lên thì client nhận về một String thông báo nên ta dùng Call để nhận String.

Viết hàm InsertStudent trong android

Hàm này sẽ gọi hàm insertStudent vừa được tạo trong Interface APIService và truyền vào name, age, nclass để post lên server

    private void insertStudent(String name, int age, String nclass) {
        mAPIService.insertStudent(name, age, nclass).enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                try {
                    String status = response.body().string().toString().trim();
                    Log.e("response", status);
                    if (status.length() > 0) {
                        getAllStudents();
                        Toast.makeText(getBaseContext(), status, Toast.LENGTH_LONG).show();
                    } else {
                        tvResult.setText(response.body().string());
                    }
                } catch (Exception e) {
                    Log.e("onResponse", "Error");
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call call, Throwable t) {
                Log.e("onFailure", t.toString());
            }
        });
    }

Mình chỉnh sửa activity_main. Sử dụng xml một chút, cho nó thêm một cái Nút, khi nhấn vào nút sẽ hiển thị Hộp thoại tùy chỉnh nhập vào các trường cần thiết, bạn có thể xem qua bài viết Hướng dẫn Hộp thoại tùy chỉnh ứng dụng Bố cục XML trong Android

    private void displayInsertDialog() {
        LayoutInflater inflater = getLayoutInflater();
        View alertLayout = inflater.inflate(R.layout.layout_custom_dialog, null);
        final EditText edStudentName, edStudentAge, edStudentClass;
        edStudentName = (EditText) alertLayout.findViewById(R.id.edName);
        edStudentAge = (EditText) alertLayout.findViewById(R.id.edAge);
        edStudentClass = (EditText) alertLayout.findViewById(R.id.edClass);

        AlertDialog.Builder alert = new AlertDialog.Builder(this)
                .setTitle("Insert a new student")
                .setView(alertLayout)
                .setCancelable(false)
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(getBaseContext(), "Cancel", Toast.LENGTH_SHORT).show();
                    }
                })
                .setPositiveButton("Insert", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // code for insert student
                        String name = edStudentName.getText().toString();
                        String age = edStudentAge.getText().toString();
                        String nclass = edStudentClass.getText().toString();
                        if ("".equals(name) || "".equals(age) || "".equals(nclass)) {
                            Toast.makeText(MainActivity.this, "Vui lòng nhập đầy đủ thông tin", Toast.LENGTH_LONG).show();
                        } else insertStudent(name, Integer.parseInt(age), nclass);
                    }
                });
        alert.create().show();
    }

Custom Dialog sử dụng XML Layout trong AndroidHộp thoại tùy chỉnh sử dụng Bố cục XML trong Android

Để xem chi tiết hơn, bạn có thể tải xuống mã nguồn của mình để ở cuối bài viết

Qua Phần 2 Hướng dẫn tạo Web Service bằng PHP và MYSQL cho ứng dụng di động này, bạn có thể hiểu đơn giản về cách tạo web service cho android cũng như cách tạo phương thức POST, GET ở server và cả ở client, sử dụng trang bị thêm

Bài viết còn hơi loằng ngoằng và ngôn từ chưa được mạch lạc lắm, mong các bạn bỏ qua. D. Xin chân thành cảm ơn các bạn đã ghé thăm blog của mình

Dự án trên Github. https. //github. com/trongcong/WebServiceAndroid

Parse Json với trang bị thêm, POST với trang bị thêm, Tạo dịch vụ web, Tạo dịch vụ web bằng php và mysql, Dịch vụ web android