Ich arbeite an ASP.Net-Projekt. Ich muss einen Anhang zu dem Fehler in HP QC ALM 12.5x hochladen.C# HP QC ALM-REST-API: Anhänge auf Fehler hochladen
Authentifizierung Teil ist bereits fertig und erfolgreich funktioniert.
Auf Defekt an der Befestigungs Hochladen Empfang WebException was unhandled: The remote server returned an error: (415) Unsupported Media Type.
ich den Code unten geschrieben haben
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
byte[] boundaryBytes = System.Text.Encoding.ASCII.GetBytes("--" + boundary + "\r\n");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(HPALMUrl + "/rest/domains/" + HPALMDomain + "/projects/" + HPALMProject + "/attachments");
request.Method = "POST";
request.Accept = "application/json";
request.Headers.Add("Accept-Language", "en-US");
request.Headers.Add("Accept-Encoding", "gzip, deflate, sdch");
request.UserAgent = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)";
request.ContentType = "Content-Type: multipart/form-data; boundary=" + boundary;
request.AllowWriteStreamBuffering = false;
request.ContentLength = imageBytes.Length;
authRequest.KeepAlive = true;
request.CookieContainer = createSessionRequest.CookieContainer; //successfully authenticated cookie
string contentDisposition = "form-data; entity.type=\"{0}\"; entity.id=\"{1}\"; filename=\"{2}\"; Content-Type=\"{3}\"";
request.Headers.Add("Content-Disposition", string.Format(contentDisposition, "defect", "4", "Defect Attachment.png", "application/octet-stream")); //I am not clear with passing content disposition. Please let me know if this should be modified.
Ich versuche, wie Bild-Datei laden unter
string path = @"C:\TestAttachment.png";
byte[] imageBytes = System.IO.File.ReadAllBytes(path);
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);
using (MemoryStream memoryStream = new MemoryStream(imageBytes))
{
byte[] buffer = new byte[imageBytes.Length];
int bytesRead = 0;
while ((bytesRead = memoryStream.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer, 0, bytesRead);
}
}
}
var response = (HttpWebResponse)request.GetResponse(); //Receiving Error here
string responseText = string.Empty;
if (response.StatusCode == HttpStatusCode.OK)
responseText = "Update completed";
else
responseText = "Error in update";
Sie mich bitte, was ich falsch mache.
Ich bin auch unsicher, die Inhaltsdisposition zu übergeben, die in rest api erwähnt wird.
Vielen Dank im Voraus!
'Content-Disposition' ist eine * Antwort * -Header. Der * Server * wird es in seiner Antwort setzen. In der Anfrage überhaupt nicht setzen –
Wie für den Fehler selbst, Anlagen sind * Dateien * und noch Ihre 'Content-Typ' ist" Multipart/Form-Daten ". Du postest kein Formular. Sie erstellen eine neue Datei. Vielleicht sollten Sie überprüfen, wie HTTP im Allgemeinen und REST im Besonderen funktionieren? –
@ PanagiotisKanavos Aber, in [API-Referenz] (https://admhelp.microfocus.com/alm/en/latest/api_refs/REST/webframe.htm#attachments.htm), Content-Disposition wird im Header-Teil –