GỌI WEBSERVICE TRONG PHP

*

Trong nội dung bài viết này mình vẫn hướng dẫn chúng ta tạo website Service bằng PHP cùng MYSQLđơn giản, cơ phiên bản cho những bạn mới ban đầu tìm phát âm về website service với PHP, rõ ràng là web service trong app android và trả lời parse json bởi thư viện retrofit với web service vẫn tạo.Bạn đã từng có lần nghe về website servicechưa, website service là gì và cách buổi giao lưu của nó như thế?


*
Tạo web Service bởi PHP với MYSQL cho áp dụng di hễ – Part 1

Web services là gì ?

Web service là 1 tập các phương thức được gọi tiến hành từ xa thông qua một add http url. Công dụng trả về của web service thường dưới dạng json hoặc xml. Web service hay được thực hiện để tạo các ứng dụng phân tán.

Bạn đang xem: Gọi webservice trong php

Web service được cho phép bạn giao tiếp qua mạng, chưa phải P2P. Nó cung ứng API có thể chấp nhận được bạn thực hiện nó để địa chỉ với service hoặc chúng ta có thể tự tạo web service bởi PHP với MYSQL như trong bài viết này.Ví dụ các bạn dùng một vận dụng di động, vận dụng desktop, web. Thì những ứng dụng kia gửi thông tin lên webservice rồi webservice xử lý tài liệu bạn giữ hộ từ tiện ích đến máy chủ và máy chủ xử lý xong xuôi nó đã trả về các dữ liệu cho bạn bằng json tốt xml, để xử lý dữ liệu ở app các bạn sẽ phải parse json xuất xắc parse xml.

Đặc điểm của web service

Chi giá tiền thấp, dễ bảo trìCó thể được được truy cập từ bất kỳ ứng dụng nàoKhông phụ thuộc vào vào ngữ điệu lập trình: PHP, JAVA, .NET,…Hỗ trợ thao tác làm việc giữa các thành phần không đồng nhất

Tạo web service bởi PHP cùng MYSQL

Trước tiên để sinh sản web service bởi php cùng mysql thì bạn phải có server cung cấp ngôn ngữ php và mysql. Nếu như khách hàng nào có chưa xuất hiện hosting thì có thể tạo localhost với Xampp hoặc WampServer, chúng ta không nên thực hiện hosting free vì gần như hosting free thường gồm chứa quảng cáo, khi chúng ta code trả về Json nó thường kèm theo những quảng cáo này gây trở ngại cho họ trong việc xử lý. Trong khuyên bảo này mình dùng WampServer.

B1:Tạo một database là students_managervà bảng là studentsbao gồm những trường : id, name, age, nclass.

Sau khi thiết lập wampserver thành công bạn vào đường dẫnhttp://localhost/phpmyadmin, userroot, pass để trống, chọn tab SQL và pase vào đoạn code sau.

#Create databaseCREATE DATABASE students_manager;#Create Table studentsCREATE TABLE students_manager.students( `id` INT(10) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NOT NULL, `age` INT(5) NOT NULL, `nclass` VARCHAR(10) NOT NULL, PRIMARY KEY(`id`)) ENGINE = InnoDB mặc định CHARSET = utf8 AUTO_INCREMENT = 1;#Insert dataINSERT INTO students_manager.students(`id`, `name`, `age`, `nclass`) VALUES(1, "Nguyễn Văn A", "20", "KT10"),(2, "Nguyễn Văn B", "21", "DT5"),(3, "Nguyễn Văn C", "20", "KT10"),(4, "Nguyễn Văn D", "21", "DT5"),(5, "Nguyễn Văn E", "21", "CK2")B2: tạo ra file php đánh tên là api.phpđể file này trong folder www của WampServerC:wamp64wwwstudent_managerapi.php

Để lấy tất cả danh sách studentsvà trả về Json.

= 1) while ($row = mysql_fetch_assoc($resouter)) $temparray<> = $row; echo json_encode($temparray);?>Bạn vào đường truyền sau để xem kết quả:http://localhost/student_manager/api.php. Hoặc các bạn có thể cài vận dụng Postmannày trên chrome để rất có thể tùy phát triển thành xem công dụng dễ hơn, link trên trình chu đáo chỉ có thể sử dụng được cách tiến hành GET tuy nhiên trên phầm mềm này có thể sử dụng được rất nhiều phương thức không giống nữa: GET, POST, PUT, PATCH, DELETE… khôn cùng hữu ích.

Xin lỗi chúng ta vì rất có thể bạn thấy vào hình gồm trường class, mà lại trong sql thì không có, lý do là tôi vừa sửa lại database 1 chút thành nclass :D.


*
Xem hiệu quả trả về Json
*
Xem kết quả ở định hình Json trong Postman

Bạn sửa đổi thêm trong file api.php cho hệt như dưới

= 1) while ($row = mysql_fetch_assoc($resouter)) $temparray<> = $row; echo json_encode($temparray);end:?>Để xem tác dụng bạn chỉ việc thêm ?id=vào sau liên kết lúc nãyhttp://localhost/student_manager/api.php?id=1. Nếu bạn để id trống http://localhost/student_manager/api.php?id=nó vẫn trả vềVui lòng nhập id.

Xem thêm: get strtotime php

Sau khi đã bao gồm Json bạn có thể parse json bằng retrofit vào android tôi đã nói ở bài xích trước.

Json parsing with Retrofit


*
Json parsing with Retrofit

B1:Mở android studiovà chế tạo một project mới đặt tên WebService

B2:Thêm thư viện retrofit vào dependencies (Module: app)

dependencies ... // Retrofit compile "com.squareup.retrofit2:retrofit:2.2.0" // JSON Parsing compile "com.google.code.gson:gson:2.8.0" compile "com.squareup.retrofit2:converter-gson:2.2.0"...

B3:Thêm quyền truy vấn INTERNET vàoAndroidManifest.xml

B4:Tạo layout mang đến activity_main.xml

B5:Tạo Object class đánh tên Student với để trong package models

Các thuộc tính của class Student giống như nhau như các trường của database, cái tiêu giảm của parse json bởi Retrofit nó nằm ở đấy, tổ chức cấu trúc của Json ra sao thì trong đối tượng trong app android phải y như thế đấy. Mình mới nghiên cứu cái thư viện này thấy như thế, chần chờ là có pro nào thao tác nhiều cùng với thư viện này có cách xử lý khác không rất ao ước được chỉ giáo, xin cảm ơn khôn xiết nhiều.

Cũng vì nguyên nhân này cần mình mới sửa class –> nclass, do thuở đầu mình tạo nên database là class nên đối tượng người dùng trong apk cũng phải để theo class. Mà lại đặt tên nằm trong tính của đối tượng người tiêu dùng là class trong app android là không được phép, sẽ thông tin lỗi ngay, nhưng chỉ sửa class –> nclass trong apk thì sẽ không parse được ngôi trường class trên webservice. Nên chỉ sửa 1 chút trên database cùng với trong game android là ok.

Override public String toString() return "Student" + "id=" + id + ", name="" + name + """ + ", age=" + age + ", nclass="" + + """ + ""; public int getId() return id; public void setId(int id) this.id = id; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.age = age; public String getNclass() return nclass; public void setNclass(String nclass) this.nclass = nclass; }

B6: tạo nên classRetrofitClient

Để sử dụng những yêu cầu mạng mang lại một RESTful API bằng Retrofit, họ cần tạo ra một đối tượng bằng phương pháp sử dụng lớp Retrofit Builder và thông số kỹ thuật nó với cùng một URL cơ sở.

Ở APIService Interface này, chỗgetStudent(
Query
của tủ sách Retrofit để truy vấn tài liệu ở ?id=..theo như links trên browser là http://localhost/student_manager/api.php?id=.., ví dụ bạn muốn lấy student theo id cùng lớp chẳng hạn, bạn sẽ viết thành getStudent(
Query(“nclass”) String nclass)
, liên kết trên browser đã làhttp://localhost/student_manager/api.php?id=…?nclass=…

Ở trên đây còn một sự việc nữa, Call> getStudent(
Query(“id”) String id);
chỉ mang một Student theo id mà lý do lại bắt buộc dùngList. Vì sao là dịp mình code service trả về Json là 1 trong những Json Array mà lại 1 array thì sẽ có khá nhiều object buộc phải Retrofitnó vẫn hiểu với trong android bắt buộc phải đểCall> mặc dù trong Json Array kia chỉ có một Object. Nếu bạn có nhu cầu chỉ gọiCall thì lúc Service trả về Json phải là 1 Json Object.

GET("/student_manager/api.php") Call> getStudents(); // GET student by id student from hệ thống // server return json object
Query("id") String id);}

B8: sản xuất classApiUtils

ClassApiUtils dùng làm khởi tạo Retrofit vào MainActivity với gọi các phương thức vào InterfaceAPIService.

Ở trên đây mình chạy xe trên Emulator đề nghị url mình nhằm làhttp://10.0.2.2 còn nếu như bạn chạy trên Genymotion sẽ đổi thànhhttp://10.0.2.3

Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); private void initView() btnGetStudent = (Button) findViewById(R.id.btnGetStudent); btnGetStudents = (Button) findViewById(R.id.btnGetStudents); tvResult = (TextView) findViewById(R.id.tvResult); mAPIService = ApiUtils.getAPIService(); btnGetStudent.setOnClickListener(this); btnGetStudents.setOnClickListener(this);

B9: phối sự khiếu nại OnClick cho 2 Button


Override public void onClick(View v) switch (v.getId()) case R.id.btnGetStudent: getStudentById(); break; case R.id.btnGetStudents: getAllStudents(); break; private void getAllStudents() { mAPIService.getStudents().enqueue(new Callback>() {
Override public void onResponse(Call> call, Response> response) try String result = ""; for (int i = 0; i > call, Throwable t) Log.d("onFailure", t.toString()); ); private void getStudentById() mAPIService.getStudent("1").enqueue(new Callback>()
Override public void onResponse(Call> call, Response> response) try tvResult.setText("ID: " + response.body().get(0).getId() + "nName: " + response.body().get(0).getName() + "nAge: " + response.body().get(0).getAge() + "nClass: " + response.body().get(0).getNclass()); catch (Exception e) Log.d("onResponse", "Error"); e.printStackTrace();
Override public void onFailure(Call> call, Throwable t) Log.d("onFailure", t.toString()); ); Code file MainActivity

package com.dev4u.ntc.webservice;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;import com.dev4u.ntc.webservice.models.Student;import com.dev4u.ntc.webservice.webservice.APIService;import com.dev4u.ntc.webservice.webservice.ApiUtils;import java.util.List;import retrofit2.Call;import retrofit2.Callback;import retrofit2.Response;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btnGetStudent; private Button btnGetStudents; private TextView tvResult; private APIService mAPIService;
Override protected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); private void initView() btnGetStudent = (Button) findViewById(R.id.btnGetStudent); btnGetStudents = (Button) findViewById(R.id.btnGetStudents); tvResult = (TextView) findViewById(R.id.tvResult); mAPIService = ApiUtils.getAPIService(); btnGetStudent.setOnClickListener(this); btnGetStudents.setOnClickListener(this);
Override public void onClick(View v) switch (v.getId()) case R.id.btnGetStudent: getStudentById(); break; case R.id.btnGetStudents: getAllStudents(); break; private void getAllStudents() { mAPIService.getStudents().enqueue(new Callback>()
Override public void onResponse(Call> call, Response> response) try String result = ""; for (int i = 0; i > call, Throwable t) Log.d("onFailure", t.toString()); ); private void getStudentById() mAPIService.getStudent("1").enqueue(new Callback>()
Override public void onResponse(Call> call, Response> response) try tvResult.setText("ID: " + response.body().get(0).getId() + "nName: " + response.body().get(0).getName() + "nAge: " + response.body().get(0).getAge() + "nClass: " + response.body().get(0).getNclass()); catch (Exception e) Log.d("onResponse", "Error"); e.printStackTrace();
Override public void onFailure(Call> call, Throwable t) Log.d("onFailure", t.toString()); ); Xem phía dẫnTạo website Service bằng PHP cùng MYSQL cho áp dụng di đụng – Part 2

Project on Github:https://github.com/trongcong/WebServiceAndroid


Json parsing, Parse json vào android, Parse Json với Retrofit, chế tạo ra web service, web service android, Webservice với PHP
Related PostGom Marker trong apk với Google Maps apk API – Google Maps app android Marker Clustering UtilitySử dụng SwipeRefreshLayout trong ứng dụng AndroidHướng dẫn chế tạo ra Material Dialog Bottom Sheet AndroidTạo context thực đơn trong app android – ActionBar ActionMode.CallBack ExampleRetrofit cùng Volley thư viện nào xuất sắc hơnHướng dẫn sử dụng thư viện Volley vào AndroidTạo website Service bởi PHP và MYSQL cho áp dụng di hễ – Part 2Hàm biến hóa Timestamp thành Datetime trong game android và JavaScriptDesign Patterns là gì? tạo nên Project app android theo mẫu Design Patterns(Part 2)Design Patterns là gì? chế tác Project app android theo chủng loại Design Patterns(Part 1)