Die WebHDFS -API erstellt erfolgreich Datei, aber anhängen ist trotz 200 Antwort mit httpclient () offensichtlicher FehlC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Die WebHDFS -API erstellt erfolgreich Datei, aber anhängen ist trotz 200 Antwort mit httpclient () offensichtlicher Fehl

Post by Anonymous »

Ich habe eine WEBHDFS -API, die erfolgreich eine Datei erstellt hat, aber wenn ich versuche, ein Byte -Array von Daten an dieselbe Datei anzuhängen, bin ich in Probleme. Die Header.location mit den Daten, die angehängt werden sollen. Dies weist darauf hin, dass die Anhängefunktion nicht funktioniert und die Datei irgendwie beschädigt wurde. gültig. Webhdfs api.

Code: Select all

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;
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post