Bạn dường như không được sử dụng bất kỳ mã hóa theo yêu cầu tiêu chuẩn, thay vào đó bạn dường như được tái phát minh một số giao thức tùy chỉnh, vì vậy bạn không thể dựa vào máy chủ ASP.NET để có thể phân tích cú pháp yêu cầu này. Bạn sẽ phải đọc các giá trị trực tiếp từ InputStream:
public void ProcessRequest(HttpContext context)
{
using (var reader = new StreamReader(context.Request.InputStream))
{
// This will equal to "charset = UTF-8 & param1 = val1 & param2 = val2 & param3 = val3 & param4 = val4"
string values = reader.ReadToEnd();
}
}
Nếu mặt khác bạn sử dụng một số mã hóa theo yêu cầu tiêu chuẩn như application/x-www-form-urlencoded
bạn sẽ có thể đọc các thông số như bình thường.
Dưới đây là như thế nào như một tải trọng yêu cầu có thể trông giống như:
POST /Handler.ashx HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 47
Connection: close
param1=val1¶m2=val2¶m3=val3¶m4=val4
Để gửi một yêu cầu như vậy, bạn có thể sử dụng một WebClient
:
using (var client = new WebClient())
{
var values = new NameValueCollection
{
{ "param1", "value1" },
{ "param2", "value2" },
{ "param3", "value3" },
{ "param4", "value4" },
};
byte[] result = client.UploadValues(values);
}
Bây giờ trên máy chủ bạn có thể đọc các giá trị như thế:
public void ProcessRequest(HttpContext context)
{
var value1 = context.Request["param1"];
var value2 = context.Request["param2"];
...
}
Nguồn
2013-06-08 08:34:19
Cảm ơn rất nhiều! Tôi đang sử dụng AngularJS cho chức năng thay đổi kích thước hình ảnh mặt trước, sau đó tải lên một mảng (mảng) của các đối tượng JSON (có chứa tên, kích thước, chính dữ liệu hình ảnh (base64), vv) vào máy chủ. Tôi gặp sự cố khi đọc tải trọng (nếu thêm thông số, "dữ liệu:" không thể tìm thấy/đọc serverside (hoặc tốt, không biết cách).) Vì vậy, bằng cách sử dụng streamReader nó bây giờ hoạt động tốt :) THANK BẠN :) – LittleTiger
@Darin Xin bạn có nghĩ rằng bạn có thể giúp tôi với câu hỏi này http://goo.gl/qiOdmT – Axel