Tôi đang cố gắng tìm cách đọc nội dung của cuộc gọi httpclient và dường như tôi không thể hiểu được. Trạng thái phản hồi mà tôi nhận được là 200, nhưng tôi không thể tìm ra cách để trả về Json thực tế đang được trả lại, đó là tất cả những gì tôi cần!
Sau đây là mã của tôi:
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();
}
Và tôi nhận được nó chỉ cần gọi nó từ một phương thức:
Task<string> result = GetResponseString(text);
Và đây là những gì tôi nhận được
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>
Cập nhật: Đây là mã hiện tại của tôi theo phản hồi của Nathan bên dưới
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;
}
Và tôi gọi nó từ phương pháp này….
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);
}
}
Và nó tiếp tục chạy mãi mãi, Nó chạm đến dòng
var model = JsonConvert.DeserializeObject<SentimentJsonModel>(result.Result);
Một lần, và nó tiếp tục chạy mà không dừng lại ở một điểm dừng khác.
Khi tôi tạm dừng thực hiện, Nó nói
Id = Không thể đánh giá biểu thức vì mã của phương thức hiện tại được tối ưu hóa., Trạng thái = Không thể đánh giá biểu thức vì mã của phương thức hiện tại được tối ưu hóa., Phương thức = Không thể đánh giá biểu thức vì mã của phương pháp hiện tại được tối ưu hóa., Kết quả = Không thể đánh giá biểu thức vì mã của phương thức hiện tại được tối ưu hóa.
.. Tôi Tiếp tục thực hiện, nhưng nó chỉ chạy mãi mãi. Không chắc vấn đề là gì