Mam kontroler WebAPI z metodą, która wygląda jak takie:metoda WebAPI z parametrem adres email zwraca 404 z HttpClient
[HttpGet]
[AcceptVerbs("GET")]
public HttpResponseMessage Run(string reportName, int someId, string someText, DateTime asOfDate, string username)
Mam trasą niestandardową skonfigurowany specjalnie dla tego działania. Kiedy nawigacja przeglądarkę do usługi internetowej, wszystko działa bez zarzutu, a odpowiednie działania jest wykonywany:
http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]
Jednak gdy próbuję programowo wywołać usługę internetową przy użyciu HttpClient i wykonanie „Get” otrzymuję błąd 404. Nie pojawia się błąd, gdy parametr username nie jest adresem e-mail. Na przykład, gdy nazwa użytkownika jest po prostu "użytkownikiem", wszystko działa poprawnie. Oto przykładowy kod:
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();
Próbowałem adresu UrlEncoding adres e-mail bez powodzenia. Każda rada jest doceniana.
Spróbuj zastąpić @ przez% 40 -Edit- Po prostu kompletne losowe domysły. -Edit2- UrlEncoding powinien był włączyć go dla ciebie, więc jeśli to, co powiedziałem, że działa, możesz sprawdzić, w jaki sposób użyłeś UrlEncoding i możliwe parametry. – Pluc
Biorąc pod uwagę złożoność twojego żądania, możesz użyć czasownika 'POST' i zamiast tego wysłać niestandardowy obiekt złożony. Pomija się także inne problemy, takie jak niemożność przekazania znaku '/' w żadnym z łańcuchów. – user1908061
@Pluc, Podałem twoją sugestię strzałem bez powodzenia zgodnie z oczekiwaniami, ponieważ jest to dokładnie to, co robił. Dzięki, tho. –