Метод был вызван в неожиданное время в HttpClient MultipartFormDataContent

Я должен опубликовать составные данные на сервер, но я получаю сообщение об ошибке ниже

Я использую код ниже

  public async static Task<string> HttpImagePostMethod(byte[] wInputData, string Uri, string path)
    {
        string result = string.Empty;
        try
        {
            #region For Https (Secure) Api having SSL
            var filter = new HttpBaseProtocolFilter();
            filter.IgnorableServerCertificateErrors.Add(Windows.Security.Cryptography.Certificates.ChainValidationResult.Untrusted);
            var client = new System.Net.Http.HttpClient(new WinRtHttpClientHandler(filter));
            #endregion

            MultipartFormDataContent requestContent = new MultipartFormDataContent();

            //   StreamContent content = new StreamContent(wInputData);
            var content = new ByteArrayContent(wInputData);
            content.Headers.ContentType = new MediaTypeHeaderValue("image/jpg");

            requestContent.Add(content, "file", path);               
            requestContent.Headers.Add("X-API-Key", UrlFactory.X_API_Key_Value);
            requestContent.Add(new StringContent("144"), "type");

            HttpResponseMessage aResp = await client.PostAsync(UrlFactory.BaseUrl + Uri, requestContent);

            if (aResp.IsSuccessStatusCode)
            {
                result = await aResp.Content.ReadAsStringAsync();
            }
            else
            {
                result = await aResp.Content.ReadAsStringAsync();
            }
        }
        catch (Exception ex)
        {
            result = string.Empty;
        }
        return result;
    }

Я получаю ошибку в этой строке

HttpResponseMessage aResp = await client.PostAsync(UrlFactory.BaseUrl + Uri, requestContent);

Благодаря этой линии

requestContent.Headers.Add("X-API-Key", UrlFactory.X_API_Key_Value);

2 ответа

Сам Ответ на этот вопрос может быть полезным для других моих друзей...

  HttpRequestMessage httpRequest = new HttpRequestMessage();
            httpRequest.Method = HttpMethod.Post;
            httpRequest.RequestUri = new System.Uri(UrlFactory.BaseUrl + Uri);
            httpRequest.Content = requestContent;

            httpRequest.Headers.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded");
            httpRequest.Headers.TryAddWithoutValidation("X-API-Key", UrlFactory.X_API_Key_Value);

Клиент (HttpClient) не должен содержать никаких заголовков, мы объявляем заголовок в HttpRequestMessage

Как говорится в сообщении об ошибке, вы пытаетесь установить заголовок для контента, но он там не принадлежит; Ваш токен API является свойством самого запроса, а не его содержимого.
Попробуйте добавить этот заголовок в client.DefaultRequestHeaders вместо.

Другие вопросы по тегам