Tôi đã cố gắng tìm ra cách đọc nội dung của cuộc gọi httpclient và tôi dường như không thể hiểu được. Tình trạng phản ứng tôi nhận được là 200, nhưng tôi không thể tìm ra cách để có được Json thực sự được trả lại, đó là tất cả những gì tôi cần!Cách lấy nội dung từ cuộc gọi httpclient?
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ỉ gọi nó từ một phương pháp:
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 mỗi câu trả lời của Nathan 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ó là 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ó hits dòng var model = JsonConvert.DeserializeObject<SentimentJsonModel>(result.Result);
Một lần, và nó tiếp tục đi mà không dừng lại ở điểm dừng khác.
Khi tôi tạm dừng thi công, Nó nói Id
= Không thể đánh giá biểu hiện vì mã của phương pháp hiện hành được tối ưu hóa., Tình trạng = có thể không đánh giá biểu hiện vì mã của phương pháp hiện hành được tối ưu hóa., Phương pháp = 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., Result = 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 chắn vấn đề là gì:
_numRetries được định nghĩa ở đâu và như thế nào? –
Trong phạm vi của lớp và được khởi tạo với giá trị 0 trong hàm tạo. AnalyseSingle() là nơi duy nhất tôi sử dụng nó. –
Bạn có đang chạy ở chế độ Gỡ lỗi không? Vấn đề được tối ưu hóa có thể là do bạn đang chạy trong chế độ Phát hành. –