Próbowałem wymyślić, jak odczytać zawartość wywołania httpclient, ale nie mogę tego uzyskać. Status odpowiedzi, który otrzymuję, to 200, ale nie mogę dowiedzieć się, jak dostać się do rzeczywistego zwracanego pliku Json, czyli wszystkiego, czego potrzebuję!
Oto mój kod:
async Task<string> GetResponseString(string text)
{
var httpClient = new HttpClient();
var parameters = new Dictionary<string, string>();
parameters["text"] = text;
Task<HttpResponseMessage> response =
httpClient.PostAsync(BaseUri, new FormUrlEncodedContent(parameters));
return await response.Result.Content.ReadAsStringAsync();
}
Otrzymuję to po prostu wywołując to z metody:
Task<string> result = GetResponseString(text);
I to właśnie dostaję
response Id = 89, Status = RanToCompletion, Method = "{null}", Result = "StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:\r\n{\r\n Connection: keep-alive\r\n Date: Mon, 27 Oct 2014 21:56:43 GMT\r\n ETag: \"5a266b16b9dccea99d3e76bf8c1253e0\"\r\n Server: nginx/0.7.65\r\n Content-Length: 125\r\n Content-Type: application/json\r\n}" System.Threading.Tasks.Task<System.Net.Http.HttpResponseMessage>
Aktualizacja: To jest mój aktualny kod na odpowiedź Nathana poniżej
async Task<string> GetResponseString(string text)
{
var httpClient = new HttpClient();
var parameters = new Dictionary<string, string>();
parameters["text"] = text;
var response = await httpClient.PostAsync(BaseUri, new FormUrlEncodedContent(parameters));
var contents = await response.Content.ReadAsStringAsync();
return contents;
}
I nazywam to tą metodą ....
string AnalyzeSingle(string text)
{
try
{
Task<string> result = GetResponseString(text);
var model = JsonConvert.DeserializeObject<SentimentJsonModel>(result.Result);
if (Convert.ToInt16(model.pos) == 1)
{
_numRetries = 0;
return "positive";
}
if (Convert.ToInt16(model.neg) == 1)
{
_numRetries = 0;
return "negative";
}
if (Convert.ToInt16(model.mid) == 1)
{
_numRetries = 0;
return "neutral";
}
return "";
}
catch (Exception e)
{
if (_numRetries > 3)
{
LogThis(string.Format("Exception caught [{0}] .... skipping", e.Message));
_numRetries = 0;
return "";
}
_numRetries++;
return AnalyzeSingle(text);
}
}
I działa wiecznie, var model = JsonConvert.DeserializeObject<SentimentJsonModel>(result.Result);
Raz trafia w linię
i dalej jedzie bez zatrzymywania się na innym punkcie przerwania.
Kiedy wstrzymuję wykonanie, mówi
Id = Nie można ocenić wyrażenia, ponieważ kod bieżącej metody jest zoptymalizowany., Status = Nie można ocenić wyrażenia, ponieważ kod bieżącej metody jest zoptymalizowany., Metoda = Nie można ocenić wyrażenia, ponieważ kod bieżącej metody jest zoptymalizowany., Wynik = Nie można ocenić wyrażenia, ponieważ kod bieżącej metody jest zoptymalizowany.
.. Kontynuuj wykonywanie, ale to po prostu trwa wiecznie. Nie jestem pewna na czym polega problem