1

"http://www.ti.com/lit/gpn/TPS767D318-Q1" 과 같은 URL은 결국 "http://www.ti.com/lit/ds/"로 라우팅되는 경로입니다. symlink/tps767d318-q1.pdf "(pdf 파일 렌더링). 내가 제공 한 두 번째 URL에서 볼 수있는 "pdf"파일 이름을 가져 오기 위해 콘솔 응용 프로그램에서이 URL을 처리하고 있습니다. 가상 URL에서 파일 이름 가져 오기?

은 내가 HttpResponse에 객체의 UriResponse.Absoluteuri 속성을 확인하고는 "http://focus.ti.com/general/docs/lit/getliterature.tsp?genericPartNumber=TPS767D318-Q1 &의 fileType = PDF" 을 말한다 마치 중첩 된 가상 경로 인 것처럼 보입니다. 아무도 내가 어디서 PDF 파일 이름을 추출하는 최종 URL을 얻을 수에 도움이 될 수 있습니까? 나는 응답 객체 어디서나 그것을 찾지 못했습니다. 나는 또한 응답 헤더와 그 중 아무것도 체크하지 않았다. ASP 확실

어떤 도움을 이해할 수있을 것이다

... 감사

답변

1

내 질문에 URL이 실제로 HTML 콘텐츠를 반환하고 "메타 태그"리다이렉션을 수행하는 것으로 나타났습니다. 그래서 나는 다음을 수행했다 :

var redirect = Regex.Match(new string(buffer, 0, count), @"\<meta(?=[^>]*http-equiv\W*refresh)[^>]*?content\s*\=[^=>]*url\s*\=\s*(?<Url>[^'"">]+)", RegexOptions.IgnoreCase | RegexOptions.Singleline); 

if (redirect.Success) 
{ 
    Uri uri = new Uri(new Uri(externalUrl, UriKind.Absolute), new Uri(redirect.Groups["Url"].Value, UriKind.RelativeOrAbsolute)); 
    return SaveUrlToTemporaryFile(uri.AbsoluteUri, needsFullDownload); 
} 

를 내가 반환 된 HTML 콘텐츠의 메타 태그에서 최종 URL을 받고, 다시 내 다운로드 루틴을 호출하고 있습니다.

1

아니지만, 프로토콜 수준에서 초기 요청을 할 수 있도록 리디렉션이, 다른 쪽 끝에있는 응용 프로그램/서버가 발행 될 수 있습니다 초기 HTTP 응답을보고 리디렉션 코드, 301, 302 등이 맞는지 확인하십시오. 그렇다면 200을 치기 전까지 302를 따라갈 수 있습니다. 그러면 최종 URL에서 파일 이름을 확인할 수 있습니다.

1

Content-Disposition 헤더를 보면 다음과 같이 보일 수 있습니다. Content-Disposition: attachment; filename=tps767d318-q1.pdf. 이것은 데이터베이스, 네트워크 공유 등에서 파일을 가져와 "다운로드"하는 웹 서비스의 일반적인 기술입니다.

+0

예 확인했습니다 ... 파일 이름이 없습니다. "Content-Disposition"헤더가 응답에 없습니다. 이상하게 ... ContentType은 'application/PDF'대신 'html'로 표시됩니다. 심지어 PDF 파일로 리디렉션되는지 궁금합니다 !! 어떤 아이디어가 계속되고 있니? – karry

+1

Firebug 또는 Fiddler와 같은 것으로 요청/응답을 모니터합니다. PlexQ가 언급했듯이 서버 요청/응답 쌍이 서버 위치를 통해 리디렉션 될 수 있습니다. – CodingGorilla

+0

FYI ... 내 업데이트 된 답변을 참조하십시오! 도와 주셔서 감사합니다! – karry

관련 문제