[Homework] Web-Services-SOA-and-REST
Здравейте,
решавам задачите от миналия курс и имам известен проблем на четвърта задача - Rest client:
Правейки го като Наков във видеото:
using (WebClient client = new WebClient())
{
var response = client.UploadString("http://localhost:60759/calcdistance?x1=0&y1=0&x2=2&y2=2", "POST");
Console.WriteLine(response);
}
всичко е ок и работи, обаче ползвайки RestSharp библиотеката:
var client = new RestClient("http://localhost:60759");
var request = new RestRequest("calcdistance", Method.POST);
request.AddParameter("x1", 0);
request.AddParameter("y1", 0);
request.AddParameter("x2", 2);
request.AddParameter("y2", 2);
var response = client.Execute(request);
Console.WriteLine(response.Content);
ми връща следния респонс:
{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:60759/calcdist
ance'.","MessageDetail":"No action was found on the controller 'Calculator' that matches the request
."}
Явно не намира ресурса, обаче не мога да си обясня защо..., IIS сървъра работи и услугата е достъпна, както през WebClient-а, така и през Postman...
Ако някой може да даде идея за причината...
Метода ми ги сериализира до обект Point с координати х и у :)
Да, но то не знае, че трябва да ти хитне този метод, защото този метод може да бъде хитнат, само ако в ГЕТ заявката има тези параметри.
Ако методът ти е
public double CalcDistance([FromBody]Point) {
}
Тогава ще стане, но само за единия пойнт. Ще ти трябва структура от данни, която държи и 4те координата. Може да е JObject ккато съм показал в примера в StackOverflow. Иначе то не се усеща въобще, че трябва да извика този метод, така че въобще не стига до твоята сериализация.
Мерси, ще го помъча по-късно довечера
Направих го така: