Tôi có một bộ điều khiển WebAPI với một phương pháp mà trông giống như ví dụ:phương pháp WebAPI với tham số địa chỉ email trả 404 từ HttpClient
[HttpGet]
[AcceptVerbs("GET")]
public HttpResponseMessage Run(string reportName, int someId, string someText, DateTime asOfDate, string username)
Tôi có một lộ trình tùy chỉnh cấu hình đặc biệt cho hành động này. Khi tôi điều hướng trình duyệt của tôi với dịch vụ web, mọi thứ hoạt động tốt, và các biện pháp thích hợp được thực hiện:
http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]
Tuy nhiên, khi tôi cố gắng để programatically gọi dịch vụ web bằng cách sử dụng HttpClient và thực hiện một "Nhận" tôi nhận được lỗi 404. Tôi không gặp lỗi khi tham số tên người dùng không phải là địa chỉ email. Ví dụ: khi tên người dùng chỉ là "người dùng", mọi thứ đều hoạt động tốt. Đây là mã mẫu:
var url = "http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]"
var client = new System.Net.Http.HttpClient();
var response = client.Get(url);
//fails here with 404 error
response.EnsureSuccessStatusCode();
Tôi đã cố gắng UrlCung cấp địa chỉ email không có may mắn. Mọi lời khuyên đều được đánh giá cao.
Thử thay thế @ bằng% 40 -Edit- Chỉ cần đoán ngẫu nhiên hoàn toàn. -Edit2- UrlEncoding nên đã chuyển nó cho bạn vì vậy nếu những gì tôi nói với bạn làm việc, bạn có thể muốn kiểm tra tại cách bạn sử dụng UrlEncoding và các thông số có thể. – Pluc
Xét đến sự phức tạp của yêu cầu của bạn, bạn có thể muốn sử dụng động từ 'POST' và gửi một đối tượng phức tạp tùy chỉnh thay thế. Sau đó, bạn cũng bỏ qua một số vấn đề khác, chẳng hạn như không thể vượt qua ký tự '/' trong bất kỳ chuỗi nào. – user1908061
@Pluc, tôi đã đưa ra đề xuất của bạn một cảnh quay không thành công như mong đợi vì đó chính xác là những gì urlecode đang làm. Cảm ơn tho. –