ในการติดต่อกับ Web Service หรือ Web API ในแอพพลิเคชั่น Xamarin บางครั้งเราจำเป็นต้องส่งข้อความ ที่เรียกกันติดปากว่า String ไปกับ URL ด้วย โดยเฉพาะในการติดต่อกับ Facebook API
กรณีที่จำเป็นต้อง Encode String
อย่างเช่นการโพสรูปภาพไปบน Timeline จะมีส่วนที่เรียกว่า caption ที่เราส่งไปเป็น caption ของภาพที่อัพโหลดได้
caption=...
เพียงแต่ถ้าส่งข้อความแบบนี้ไป จะมีปัญหาเอา…
caption=Hi! Nextflow
ซึ่งส่วนสำคัญที่จะทำให้เกิดความผิดพลาดในตัวอย่าง คือ “ช่องว่าง” (White space) และพลเอาอักขระที่สามารถใช้งานใน URL String มาไว้ด้านล่าง สำหรับคนที่อยากรู้ ซึ่งอ้างอิงจากมาตรฐาน RFC 1738
$-_.+!*'(),
Class C# ที่ช่วยแปลงข้อความ
Uri.EscapeDataString(string)
โดยตัว Method จะรับข้อความธรรมดาทั่วไปอย่าง “Hi! Nextflow” แปลงเป็น
Hi%21%20Nextflow
เพื่อที่จะสามารถใช้ใน URL String ได้สบายๆ
$"caption={Uri.EscapeDataString("Hi! Nextflow")}"
** จากการค้นหาข้อมูล Uri.EscapeDataString จะแปลงข้อความรับกับมาตรฐาน RFC 1738 ที่ใช้กันอยู่ในปัจจุบันใน .NET 4.5 เป็นต้นไปนะ
อ้างอิงจาก – StackOverflow