将REST与Basic Auth和FormUrlEncoded有效负载一起使用多个'文本'条目(本质上,一个单词文档表示为8个句子),当我调用它时,它返回翻译,但它返回第一个句子两次,使翻译的数组与初始请求不同步。有什么基本的东西我不见了吗?我也被困在.net40上了。
var payload = new FormUrlEncodedContent(watsonValues);
var translationResponse = _watsonClient.PostAsync($"{_watsonBase}/v2/translate", payload).Result;
if (translationResponse.IsSuccessStatusCode)
{
var responsePayload = translationResponse.Content.ReadAsStringAsync().Result;
var watsonTranslations = JsonConvert.DeserializeObject<WatsonMtResponse>(responsePayload);
foreach (var translation in watsonTranslations.Translations)
{
translatedList.Add(translation.Translation);
}
}
else
{
translationResponse.EnsureSuccessStatusCode();
}
答案 0 :(得分:2)
我通过提出基于Json的请求而不是之前发出的FormUrlEncoded请求来解决这个问题。代码基本上就是......
var translationResponse = _watsonClient.PostAsync($"{_watsonBase}/v2/translate",
new StringContent(JsonConvert.SerializeObject(mtRequest),
Encoding.UTF8,
"application/json"))
.Result;
if (translationResponse.IsSuccessStatusCode)
{
var responsePayload = translationResponse.Content.ReadAsStringAsync().Result;
var watsonTranslations = JsonConvert.DeserializeObject<WatsonMtResponse>(responsePayload);
foreach (var translation in watsonTranslations.Translations)
{
translatedList.Add(translation.Translation);
}
}
else
{
translationResponse.EnsureSuccessStatusCode();
}
Json对象看起来像这样......
class WatsonMtRequest
{
[JsonProperty("model_id")]
public string ModelId { get; set; }
[JsonProperty("text")]
public List<string> Text { get; set; }
}