Я видел похожие вопросы, но никто, кажется, не помогает мне в моей проблеме, поэтому, пожалуйста, несите меня.HttpResponseMessage от HttpClient к пользовательскому объекту C#
У меня есть метод контроллера WebAPI, который определен как таковой:
[HttpPost]
[Route("")]
public HttpResponseMessage CreateMyObject(MyObjectRequest myObject)
{
MyObject o;
try
{
o = _serviceFactory.GetInstance().CreateMyObject(myObject);
}
catch (Exception ex)
{
ex.WriteToLog();
throw ApiHelper.CreateResponseException(HttpStatusCode.InternalServerError, ex);
}
var response = Request.CreateResponse(HttpStatusCode.Created, o);
var uri = Url.Link("GetMyObjectById", new { myObjectId = o.MyObjectId.ToString() });
response.Headers.Location = new Uri(uri);
return response;
}
Say, MyObject содержит два свойства,
public MyObject
{
public Guid MyObjectId;
public string MyObjectName
}
клиент был написан, чтобы вызывать эти методы контроллера в приложении WPF , Вот метод клиент, который используется:
public HttpResponseMessage CreateQuote(MyObjectRequest myObject)
{
var hashtable = new Hashtable
{
{"myObject", myObject}
};
var task = GetResponse("", hashtable);
var response = task.Result;
return response;
}
protected async Task<HttpResponseMessage> GetResponse(string path, Hashtable parameters)
{
var response = await GetAsync(BuildRequestUri(path, parameters)).ConfigureAwait(false);
return response.IsSuccessStatusCode ? response : new HttpResponseMessage();
}
protected async Task<HttpResponseMessage> GetResponse(string path)
{
return await GetResponse(path, null);
}
Контроллер и поддерживает клиентский код не был написан мной и был уже в системе. Я просто поглощаю это в приложении WPF. Теперь я пытаюсь вызвать метод контроллера через клиента в приложении и получить ответ от MyObject, чтобы я мог получить доступ к MyObjectId, который был создан и установлен. Я пробовал некоторые другие ответы на подобные вопросы, но даже не видел некоторых методов, которые вызываются в ответ, чтобы получить информацию. Вот первая часть вызова к клиенту, что я имею в применении:
var httpResponse = ApplicationService.CreateMyObject(myObjectRequest);
Служба приложения просто вводит клиент в конструктор и позволяет мне вызвать метод CreateMyObject. Есть ли какое-либо представление о том, как я должен получить объект MyObject из ответа?
Это, кажется, работает, когда я делаю GET. Тем не менее, я делаю POST здесь, так что это действительно не помогает. Есть ли другой способ сделать это для POST? –
Хммм ... мой код тоже POST. Вы ссылаетесь на System.Net.Http.Formatting.dll в своем проекте? http://stackoverflow.com/questions/18495484/httpclient-and-readasasynct-extension-method –
Вы были абсолютно правы. Я делал это очень неправильно. Благодарю за ваш ответ. –