WebRequest WebResponse WebClient 实例

1.WebClient

  // WebClient 获取网页响应

        WebClient client 
=   new  WebClient();

        Stream sm 
=  client.OpenRead( " http://localhost:2229/WebSite1/Default2.aspx " );

        StreamReader srd 
=   new  StreamReader(sm);
        Response.Write(srd.ReadToEnd());

        sm.Close();
        client.Dispose();

 2.WebRequest, WebResponse


        
// web request 获取响应
         string  PostStr  =   " Post some data! " ;
        
byte [] bytearry  =  System.Text.Encoding.ASCII.GetBytes(PostStr);
        WebRequest request 
=  WebRequest.Create( " http://localhost:2229/WebSite1/Default2.aspx " );
        
        
// 若只是上传数据则

        request.ContentLength 
=  bytearry.Length;
        request.Method 
=   " POST " ;
        Stream Upsm 
=  request.GetRequestStream();
        Upsm.Write(bytearry,
0 ,bytearry.Length);
        Upsm.Close();

        
// 获取数据, 下载流
        WebResponse response  =  request.GetResponse();
        Stream downsm 
=  response.GetResponseStream();
        StreamReader sr 
=   new  StreamReader(downsm, System.Text.Encoding.Default);
        Response.Write(sr.ReadToEnd());
        sr.Close();
        response.Close();

被请求页代码 Default2.aspx

 

public   partial   class  Default2 : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{

        
byte[] input= new byte[10000];

        Request.InputStream.Read(input, 
010000);

        WriteLog(System.Text.Encoding.ASCII.GetString(input));

        Response.Clear();
        Response.ClearContent();
        Response.Write(
"this is Default2 Response!");
        Response.End();

        

    }


    
public void WriteLog(string text)
    
{

        FileStream fs 
= new FileStream(@"D:a.txt", FileMode.OpenOrCreate);
        StreamWriter sw 
= new StreamWriter(fs);
        sw.WriteLine(text);
        sw.Close();
        fs.Close();
    
    }

}

 其他方式:

例如发送Soap文件时候,可以创建XmlDocument对象,直接使用Save()即可:


XmlDocument doc = new XmlDocument();
doc.Load( System.Web.HttpContext.Current.Server.MapPath(@"~")+@"/" + xmlfile);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"http://s:81/5do8/webs.asmx");

req.ContentType = "text/xml;charset=/"utf-8/"";
req.Accept = "text/xml";
req.Method = "POST";

Stream stm = req.GetRequestStream();
doc.Save(stm);
stm.Close();
WebResponse resp = req.GetResponse();
stm = resp.GetResponseStream();
StreamReader r = new StreamReader(stm);
Response.Write(HttpUtility.HtmlEncode(r.ReadToEnd()));

利用ASP发送XMLHTTP对象:
Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST",url,false
xmlhttp.setRequestHeader "Content-Type", "text/xml;charset=utf-8"
xmlhttp.setRequestHeader "HOST","s"
xmlhttp.setRequestHeader "Content-Length",LEN(SoapRequest)
xmlhttp.setRequestHeader "SOAPAction", "http://s" 
xmlhttp.Send(SoapRequest)
Response.Write xmlhttp.Status&” ”
Response.Write xmlhttp.StatusText
Set xmlhttp = Nothing


获取的时候:
If xmlhttp.Status = 200 Then
Set xmlDOC =server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
xmlStr = xmlDOC.xml
Set xmlDOC=nothing
xmlStr = Replace(xmlStr,"<","<")
xmlStr = Replace(xmlStr,">",">")
Response.write xmlStr
Else
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if
请求正确则给出完整响应,请求不正确(如账号,密码不对)响应的内容就会信息不完整.
取出响应里的数据,如下:
If xmlhttp.Status = 200 Then
Set xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
Response.Write xmlDOC.documentElement.selectNodes("//LoginByAccountResult")(0).text 
Set xmlDOC = nothing
Else
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if
显示某节点各个属性和数据的FUNCTION:
Function showallnode(rootname,myxmlDOC)
if rootname<>"" then
set nodeobj=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"")'当前结点对像
nodeAttributelen=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"").attributes.length'当前结点属性数
returnstring=returnstring&"<BR>节点名称:"&rootname
if nodeobj.text<>"" then
returnstring=returnstring&"<BR>节点的文本:("&nodeobj.text&")"
end if
returnstring=returnstring&"<BR>{<BR>"
if nodeAttributelen<>0 then
returnstring=returnstring&"<BR>属性数有  "&nodeAttributelen&" 个,分别是:"
end if
for i=0 to nodeAttributelen-1
returnstring=returnstring&"<li>"&nodeobj.attributes(i).Name&": "&nodeobj.getAttribute(nodeobj.attributes(i).Name)&" </li>"
next
if nodeobj.childNodes.Length<>0 then
if nodeobj.hasChildNodes() and lcase(nodeobj.childNodes.item(0).nodeName)<>"#text" then'是否有子节点
set childnodeobj=nodeobj.childNodes
childnodelen=nodeobj.childNodes.Length
returnstring=returnstring&"<BR><BR>有 "&childnodelen&" 个子节点;<BR>分别是: "
for i=0 to childnodelen-1
returnstring=returnstring&"<li>"&childnodeobj.item(i).nodeName&"</li>"
next
end if
end if
returnstring=returnstring&"<BR>}<BR>"
response.write returnstring
set nodeobj=nothing
end if
End Function
可以这样用:
If xmlhttp.Status = 200 Then
Set xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "LoginByAccountResponse",xmlDOC’调用SHOWALLNODE
Set xmlDOC = nothing
Else
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if

POST:

url = "http://s/"
SoapRequest="username="&username&"&password="&password
Set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")
xmlhttp.Open "POST",url,false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"’注意
xmlhttp.setRequestHeader "HOST","
"
xmlhttp.setRequestHeader "Content-Length",LEN(SoapRequest)
xmlhttp.Send(SoapRequest)

Response.Write xmlhttp.Status&” ”
Response.Write xmlhttp.StatusText
Set xmlhttp = Nothing

'POST 
If xmlhttp.Status = 200 Then
Set xmlDOC = server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
showallnode "string",xmlDOC'调用SHOWALLNODE
Set xmlDOC = nothing
Else
Response.Write xmlhttp.Status&" "
Response.Write xmlhttp.StatusText
End if

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值