Я немного борюсь с запросом RestSharp POST, который мне нужно изменить, чтобы использовать вместо него HttpClient. Это особый случай, когда мне нужно отправить HTML разметку на Memsource , чтобы создать новую работу по переводу. У меня это работает в Postman, где я могу получить пример кода как запрос RestSharp, но в своей кодовой базе я использую HttpClient.
Пример кода RestSharp в Postman выглядит следующим образом:
var client = new RestClient("https://cloud.memsource.com/web/api2/v1/projects/<myProjectId>/jobs?token=<myAuthToken>");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Disposition", "filename=\"translation.html\"");
request.AddHeader("Memsource", "{\"targetLangs\": [\"da\", \"de\", \"de-AT\", \"de-BE\"]}");
request.AddHeader("Content-Type", "application/octet-stream");
request.AddParameter("application/octet-stream", "<!doctype html>\r\n<html lang=\"en\">\r\n<head>\r\n
<meta charset=\"utf-8\">\r\n <title>My page</title>\r\n <meta name=\"viewport\"
content=\"width=device-width, initial-scale=1\">\r\n</head>\r\n<body>\r\n\t<h1>My page</h1>\r\n\t<p>This is a paragraph<br />That needs to be translated</p>\r\n</body>\r\n</html>", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
Моя попытка с HttpClient в настоящее время такова:
string previewMarkup = "" // omitted markup for readability in this post
var targetLangs = new { targetLangs = new[] { "da", "de", "de-AT", "de-BE" } };
string targetLanguagesParamJson = JsonConvert.SerializeObject(targetLangs);
HttpContent httpContent = new StringContent(previewMarkup, Encoding.UTF8, MediaTypeNames.Text.Html);
httpContent.Headers.Add("Content-Disposition", "filename=\"translation.html\"");
httpContent.Headers.Add("Memsource", targetLanguagesParamJson);
httpContent.Headers.ContentType = MediaTypeHeaderValue.Parse(MediaTypeNames.Application.Octet);
HttpResponseMessage httpResponseMessage = await _httpClient.PostAsync("https://cloud.memsource.com/web/api2/v1/projects/<myProjectId>/jobs?token=<myAuthToken>", httpContent, cancellationToken);
Я получаю следующую ошибку: The format of value 'filename="translations.html"' is invalid.
Кто-нибудь знает, что я могу пропустить здесь?
Заранее спасибо.