У меня есть API WebHDFS, который успешно создает файл, но затем, когда я пытаюсь добавить байтовый массив данных в тот же файл, я сталкиваюсь с проблемами. Header.Location с добавлением данных. Это указывает на то, что функция приложения не работает, и файл каким -то образом был поврежден. /> < /ol>
Я ожидаю, что файл будет расти больше после добавления, и я смогу открыть файл и увидеть добавленные данные, а также исходные данные. API. < /P>
Кто -нибудь здесь успешно добавил данные в файл в моде раньше? < /P>
Если есть другие идеи, дайте мне знать.uri = _strURI + (strFullFileName + "?op=APPEND&user.name=" + _webHdfsUserName);
method = "POST";
private async Task RunPutBinaryFileRequest(string strURI, string strMethod, byte[] data)
{
bool blnResult = false;
try
{
var handler = new HttpClientHandler
{
AllowAutoRedirect = false,
PreAuthenticate = true,
};
var hClient = new HttpClient(handler);
var request = new HttpRequestMessage
{
Method = new HttpMethod(strMethod), //PUT or POST: PUT = CREATE , POST REQUIRED FOR APPEND, determined by calling function.
RequestUri = new Uri(strURI),
};
hClient.DefaultRequestHeaders.Referrer = new Uri(strURI);
hClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(_webHdfsUserName + ":" + _webHdfsPassword)));
var response = await hClient.SendAsync(request);
//response.EnsureSuccessStatusCode();
blnResult = await UseBinaryHTTP(data, response.Headers.Location, strMethod);
hClient.Dispose();
}
catch (HttpRequestException ex)
{
_logger.LogError("[RunBinaryPutFileRequest]request}::WebException{ex}", ex.Message);
}
return blnResult;
}
private async Task UseBinaryHTTP(byte[] data, Uri url, string strMethod)
{
var success = false;
try
{
var hClient = new HttpClient();
var sContent = new ByteArrayContent(data);
var aValue = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.ASCII.GetBytes(_webHdfsUserName + ":" + _webHdfsPassword)));
hClient.DefaultRequestHeaders.Authorization = aValue;
var request = new HttpRequestMessage
{
Method = new HttpMethod(strMethod),
RequestUri = url,
Content = sContent
};
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
var response = await hClient.SendAsync(request);
response.EnsureSuccessStatusCode();
hClient.Dispose();
success = true;
}
catch (HttpRequestException ex)
{
_logger.LogError("[UseBinaryHTTP]request}::WebException{ex}", ex.Message);
}
return success;
}
Подробнее здесь: https://stackoverflow.com/questions/781 ... despite-20