Saya telah mencoba mencari cara untuk membaca konten panggilan httpclient, dan sepertinya saya tidak bisa mendapatkannya. Status respons yang saya dapat adalah 200, tetapi saya tidak tahu bagaimana caranya agar Json yang sebenarnya dikembalikan, yang saya butuhkan!
Berikut ini adalah kode saya:
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();
}
Dan saya mendapatkannya hanya dengan memanggilnya dari sebuah metode:
Task<string> result = GetResponseString(text);
Dan inilah yang saya dapatkan
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>
Pembaruan: Ini adalah kode saya saat ini sesuai dengan tanggapan Nathan di bawah ini
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;
}
Dan saya menyebutnya dari metode ini ....
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);
}
}
Dan terus berjalan selamanya, Ini menyentuh garis
var model = JsonConvert.DeserializeObject<SentimentJsonModel>(result.Result);
Sekali, dan terus berjalan tanpa berhenti di breakpoint lain.
Saat saya menghentikan eksekusi, Ia berkata
Id = Tidak dapat mengevaluasi ekspresi karena kode metode saat ini dioptimalkan., Status = Tidak dapat mengevaluasi ekspresi karena kode metode saat ini dioptimalkan., Metode = Tidak dapat mengevaluasi ekspresi karena kode dari metode saat ini dioptimalkan., Hasil = Tidak dapat mengevaluasi ekspresi karena kode metode saat ini dioptimalkan.
.. Saya melanjutkan eksekusi, tapi itu berjalan selamanya. Tidak yakin apa masalahnya