[英].NET - Content-Disposition Header Not Showing in WebAPI
我正在嘗試創建一個WebAPI,該WebAPI將向另一個服務器(企業Oracle Agile PLM)發出GET請求,並返回一個文檔。 我正在使用.NET 4.5.1。 我已經能夠獲取實際的文件數據,但是很難獲取其原始文件名。 我讀到響應的Content-Disposition標頭是查找此內容的最佳位置,因為它不包含在URI中。
這是我目前正在嘗試並失敗的內容。 既然我只專注於嘗試顯示標題,這是不完整的:
public string GetDocsForDocNumber()
{
var docUrlString = "https://agprd.myDomain.com/Agile/link/Information%20Systems/1044698/files/ALL";
var username = "user";
var password = "pass";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(docUrlString);
try
{
string authKey = Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes(username + ":" + password));
request.Headers.Add("Authorization", "Basic " + authKey);
//DEBUG - Printing out all request headers...
WebHeaderCollection whCollection2 = request.Headers;
for (int i = 0; i < whCollection2.Count; i++)
{
System.Diagnostics.Debug.WriteLine("\n REQUEST header key: " + whCollection2.GetKey(i) + " value: " + whCollection2.Get(i));
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (Stream rstream = response.GetResponseStream())
{
//DEBUG -- Printing out all response headers...
WebHeaderCollection whCollection = res.Headers;
for (int i = 0; i < whCollection.Count; i++)
{
System.Diagnostics.Debug.WriteLine("header key: " + whCollection.GetKey(i) + " value: " + whCollection.Get(i) + "\n");
}
}
res.Close();
}
catch { }
return "blah";
}
這是在VS中打印的標題:
REQUEST header key: Authorization value: Basic eWFAKeJaSEHnef2jk9hasE= (this is fudged FYI)
RESPONSE header key: Transfer-Encoding value: chunked
RESPONSE header key: Cache-Control value: private
RESPONSE header key: Content-Type value: application/octet-stream
RESPONSE header key: Date value: Fri, 28 Sep 2018 18:38:15 GMT
RESPONSE header key: Set-Cookie value: JSESSIONID=GTF8bn1XvKPw1mQ1HJaejfejjaE3fNb0pTG5T15VVbwGlQ!331878993!-1921346355; path=/; HttpOnly,NSC_WTWS-BHQSE-443=ffffffffaf1cef7b419874afe8455e445a4a422d69;Version=1;path=/;secure
RESPONSE header key: X-Powered-By value: Servlet/3.0 JSP/2.2
我已經嘗試使用WebClient,HTTPClient等進行類似的操作,但無法顯示出來。 如果我使用該URI並將其插入瀏覽器,則響應標頭顯示如下:
當我從WebAPI發出請求時,我不明白為什么它不存在。 我可以從iOS應用程序發出相同的請求,並且效果很好。 同樣,我可以得到實際的文檔數據,但是我無法獲得文件名,因為該標頭是MIA。
有任何想法嗎? 我對此還很陌生,所以我希望它既簡單又簡單。
謝謝
oracle服務器僅在存在有效的user-agent
時發送content-disposition
(瀏覽器會自動發送用戶代理標頭)。 oracle服務器可能會這樣做,因為它假設除非您是瀏覽器,否則您將不希望content-disposition
標頭(瀏覽器使用content-disposition
標頭來知道如何處理返回的某些數據。即下載此文件,顯示此內容。圖片等)。
因此,您可以自己添加user-agent
標頭,以獲取content-disposition
標頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.