Twitter가 https를 통해 위젯 자바 스크립트 파일을 제공하지 않는다는 것을 알고 있으므로 httphandler를 통해 서비스를 제공하기로 결심했습니다. 여기JavaScript 파일을 읽고 HttpHandler를 통해 다시 출력
내가 지금까지 무엇을했는지 있습니다 :
public void ProcessRequest(HttpContext context) {
context.Response.ContentType = "application/javascript";
WebRequest request = WebRequest.Create("http://widgets.twimg.com/j/2/widget.js");
request.Method = "GET";
request.ContentType = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
using (WebResponse response = request.GetResponse()) {
using (Stream requestStream = response.GetResponseStream()) {
Stream outStream = context.Response.OutputStream;
byte[] buffer = new byte[1024];
int len = (int)response.ContentLength, bytes;
while (len > 0 && (bytes =
requestStream.Read(buffer, 0, buffer.Length)) > 0) {
outStream.Write(buffer, 0, bytes);
len -= bytes;
}
}
}
}
나는 어떤 오류가 발생하지 오전하지만 난 코드를 디버깅 할 때, 나는 response.ContentLength
가 -1
로 돌아 오는 것을 보았다. 내가 여기서 무엇을 놓치고 있니? UPDATE
는 어떤 차이가 있는지 확인하기 위해뿐만 아니라 아래의 코드를 시도하고 중 하나가 작동하지 않았다 : 나는 아래의 코드를 사용하여 내 문제를 해결
public void ProcessRequest(HttpContext context) {
context.Response.ContentType = "application/x-javascript";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://widgets.twimg.com/j/2/widget.js");
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Method = "GET";
using (WebResponse response = request.GetResponse()) {
using (Stream requestStream = response.GetResponseStream()) {
Stream outStream = context.Response.OutputStream;
byte[] buffer = new byte[1024];
int len = (int)response.ContentLength, bytes;
while (len > 0 && (bytes =
requestStream.Read(buffer, 0, buffer.Length)) > 0) {
outStream.Write(buffer, 0, bytes);
len -= bytes;
}
}
}
}
행운이 없다. – tugberk
StatusCode 및 StatusDescription도 정상적으로 처리됩니다. – tugberk
요청에 대해서도 .ContentType? –