你知道Twitter沒有通過https服務它的widget javascript文件,所以我決定通過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也是OK。 – tugberk
也適用於request.ContentType? –