M
myhyli
I want to get some files from another remote server,so:
1.at first, I use xmlhttp(activeXObject),but I found it will not work with
some url like: http://rss.xinhuanet.com/rss/it.xml , and some url can,like:
http://rss.chinabyte.com/216454257090494464.xml (BUT I can access those url
correctly by IE)
I don't know why,and I don't think anything wrong with the program
so I decide to use another method
2.I use .net WebRequest class to do the same thing,but I got the same
result: failed with some url
what can I do?so at last, I think I have no choise but to use sockets
3.I use .net System.Net.Sockets to create an TcpClient to connect the the
HTTP server. This time I failed with any url . the remote http server
returned "400 bad request". I'm so unlucky!
the code here:
////////////////////////////////////////////////////////////////////////////
//////
<%@ page language="JScript" Debug="true" contenttype="text/plain"%>
<%@ Import Namespace="System.Net.Sockets" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Object" %>
<%
var server = "www.blogchina.com";
var file = "/xml/1_rss2.xml";
var port = "80";
var outputStr = [];
var cmdMultiLine = [];
var t = new Date();
init();
function init(){
//connect to HTTP server
var tcpClient = new TcpClient();
tcpClient.Connect(server, port);
//get stream
var netStream = tcpClient.GetStream();
var readStream = new StreamReader(netStream,Encoding.GetEncoding(936));
cmdMultiLine[cmdMultiLine.length] = "GET /xml/1_rss2.xml HTTP/1.0";
cmdMultiLine[cmdMultiLine.length] = "Accept: */*";
cmdMultiLine[cmdMultiLine.length] = "Accept-Language: zh-cn";
cmdMultiLine[cmdMultiLine.length] = "Accept-Encoding: gzip, deflate";
cmdMultiLine[cmdMultiLine.length] = "User-Agent: Mozilla/4.0 (compatible;
MSIE 6.0; Windows NT 5.0; MyIE2)";
cmdMultiLine[cmdMultiLine.length] = "Host: www.blogchina.com";
cmdMultiLine[cmdMultiLine.length] = "Connection: Keep-Alive";
cmdMultiLine[cmdMultiLine.length] = "Cache-Control: no-cache";
cmdMultiLine[cmdMultiLine.length] = "Cookie:
ASPSESSIONIDCSDBRDBB=BEOEIOCAGCMBKIHMDFOKIGLI\r\n\r\n";
var cmd =
Encoding.GetEncoding("ascii").GetBytes(cmdMultiLine.join("\r\n").ToCharArray
());
netStream.Write(cmd,0,cmd.Length);
var read = new Char[256];
var count = readStream.Read( read, 0, 256 );
while (count > 0){
var str = new System.String(read, 0, count);
outputStr[outputStr.length] = str;
count = readStream.Read(read, 0, 256);
}
netStream.Close();
tcpClient.Close();
}
%>
<% = outputStr.join("\r\n") %>
<!--<%=(new Date()-t)%>-->
////////////////////////////////////////////////////////////////////////////
//
thanks in advance
1.at first, I use xmlhttp(activeXObject),but I found it will not work with
some url like: http://rss.xinhuanet.com/rss/it.xml , and some url can,like:
http://rss.chinabyte.com/216454257090494464.xml (BUT I can access those url
correctly by IE)
I don't know why,and I don't think anything wrong with the program
so I decide to use another method
2.I use .net WebRequest class to do the same thing,but I got the same
result: failed with some url
what can I do?so at last, I think I have no choise but to use sockets
3.I use .net System.Net.Sockets to create an TcpClient to connect the the
HTTP server. This time I failed with any url . the remote http server
returned "400 bad request". I'm so unlucky!
the code here:
////////////////////////////////////////////////////////////////////////////
//////
<%@ page language="JScript" Debug="true" contenttype="text/plain"%>
<%@ Import Namespace="System.Net.Sockets" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Object" %>
<%
var server = "www.blogchina.com";
var file = "/xml/1_rss2.xml";
var port = "80";
var outputStr = [];
var cmdMultiLine = [];
var t = new Date();
init();
function init(){
//connect to HTTP server
var tcpClient = new TcpClient();
tcpClient.Connect(server, port);
//get stream
var netStream = tcpClient.GetStream();
var readStream = new StreamReader(netStream,Encoding.GetEncoding(936));
cmdMultiLine[cmdMultiLine.length] = "GET /xml/1_rss2.xml HTTP/1.0";
cmdMultiLine[cmdMultiLine.length] = "Accept: */*";
cmdMultiLine[cmdMultiLine.length] = "Accept-Language: zh-cn";
cmdMultiLine[cmdMultiLine.length] = "Accept-Encoding: gzip, deflate";
cmdMultiLine[cmdMultiLine.length] = "User-Agent: Mozilla/4.0 (compatible;
MSIE 6.0; Windows NT 5.0; MyIE2)";
cmdMultiLine[cmdMultiLine.length] = "Host: www.blogchina.com";
cmdMultiLine[cmdMultiLine.length] = "Connection: Keep-Alive";
cmdMultiLine[cmdMultiLine.length] = "Cache-Control: no-cache";
cmdMultiLine[cmdMultiLine.length] = "Cookie:
ASPSESSIONIDCSDBRDBB=BEOEIOCAGCMBKIHMDFOKIGLI\r\n\r\n";
var cmd =
Encoding.GetEncoding("ascii").GetBytes(cmdMultiLine.join("\r\n").ToCharArray
());
netStream.Write(cmd,0,cmd.Length);
var read = new Char[256];
var count = readStream.Read( read, 0, 256 );
while (count > 0){
var str = new System.String(read, 0, count);
outputStr[outputStr.length] = str;
count = readStream.Read(read, 0, 256);
}
netStream.Close();
tcpClient.Close();
}
%>
<% = outputStr.join("\r\n") %>
<!--<%=(new Date()-t)%>-->
////////////////////////////////////////////////////////////////////////////
//
thanks in advance