Tôi đang cố gắng gửi một bài đăng được mã hóa URL tới một API REST được triển khai trong PHP. Các dữ liệu POST chứa hai chuỗi người dùng cung cấp:Cách để thoát dữ liệu được mã hóa URL trong POST bằng HttpWebRequest
WebRequest request = HttpWebRequest.Create(new Uri(serverUri, "rest"));
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
request.Headers.Add("Content-Transfer-Encoding", "binary");
// Form the url-encoded credentials we'll use to log in
StringBuilder builder = new StringBuilder();
builder.Append("user=");
builder.Append(user);
builder.Append("&password=");
builder.Append(password);
byte[] credentials = Encoding.UTF8.GetBytes(builder.ToString());
// Write the url-encoded post data into the request stream.
request.ContentLength = credentials.Length;
using (Stream requestStream = request.GetRequestStream()) {
requestStream.Write(credentials, 0, credentials.Length);
}
này sẽ gửi một yêu cầu HTTP đến máy chủ chứa user=myusername&password=mypassword
trong UTF-8 như dữ liệu POST của nó.
Làm cách nào để thoát khỏi chuỗi do người dùng cung cấp? Ví dụ: Ví dụ: nếu tôi có người dùng tên là big&mean
, thì ký hiệu và ký tự nên được thoát như thế nào để nó không làm hỏng dòng yêu cầu?
Cảm ơn! Nếu tôi sử dụng phương thức đó trên một chuỗi chứa các ký tự UTF-8, chẳng hạn như s-z của Đức, cặp mã UTF-8 được chuyển thành '% c3% 9f'. Tôi giả định rằng có nghĩa là 'Content-Transfer-Encoding' sẽ được đặt thành '7bit' ngay bây giờ? – Cygon
Một trong các tham số bạn có thể cung cấp với HttpUtility.UrlEncode là Mã hóa. Các số ký tự được sử dụng sau '%' phụ thuộc vào mã hóa. – pauloya