บทนำ (Overview)
เราสามารถเขียน “RESTful Web Serices” เพื่อดึงค่า “User Agent” ซึ่งก็คือ “Web Browser” ต่าง ๆ เช่น “Firefox IE Safari” จาก “Operating System” ต่าง ๆ ได้ดังนี้
ขั้นตอน (Steps)
- ก่อนอื่นเริ่มต้นต้องเพิ่มคำสั่งดังนี้
import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders;
- จากนั้นเราสามารถเรียกใช้งาน “@Context” และ “HttpHeaders” ดังนี้
@Context HttpHeaders tmpHeader
- สามารถเขียน “Source-code” เป็นตัวอย่างได้ดังนี้
@GET @Path("/testUserAgent") public String getAgent(@Context HttpHeaders tmpHeader) { String tmpAgent = tmpHeader.getRequestHeader("user-agent").get(0); return tmpAgent; }
- ทดสอบ “RESTful Web Servers” ได้ดังนี้
- จากการทดลองข้างต้น เราลองมาทดสอบกันดูว่าอะไรคือ “Header” อะไรคือ “User-Agent” โดยใช้โปรแกรม “Burp” ลองดักจับ “HTTP request” และ “response” อีกสักครั้ง
- “HTTP request” ฝั่งซ้ายคือฝั่งที่ “Web Browser” ส่งไปคือ “Firefox” และฝั่งขวาคือสิ่งที่ “Web Server” ได้รับโดยเราเขียนโปรแกรมให้แสดงผลกลับมานั้น
- สรุป “Source-code” ทั้งหมดได้ดังต่อไปนี้
package helloworld; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.FormParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; @Path("Login") public class LoginResource { @POST public String checkLogin(@FormParam("user") String tmpUser, @FormParam("pass") String tmpPass) { return "Username: " + tmpUser + "..." + "Password: " + tmpPass ; } @GET @Path("/Forgot") public String forgotPassword() { return "E-mail sent already"; } @GET @Path("/testUserAgent") public String getAgent(@Context HttpHeaders tmpHeader) { String tmpAgent = tmpHeader.getRequestHeader("user-agent").get(0); return tmpAgent; } }