`
yzd
  • 浏览: 1819684 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

WebRequest

 
阅读更多
1:利用System.Net.WebRequest的Create方法创建WebRequest对象:<br><div class="code">
<br>System.Net.WebRequestObjWebRequest=System.Net.WebRequest.Create(urlP);<br>
</div>
<br>异常类型:<br>NotSupportedException:requestUri中指定的请求方案未注册。<br>ArgumentNullException:requestUri为空引用(VisualBasic中为Nothing)。<br>SecurityException调用方没有连接到请求的URI或请求重定向到的URI上的权限。<br><br>2:对请求进行预先身份验证,如果无明确的要求,此项可以空.<br><div class="code">
<br>ObjWebRequest.Credentials=CredentialCache.DefaultCredentials;<br>
</div>
<br><br>如果需要按照特别的验证协议,需要强制转换成HttpWebRequest类型:<br><div class="code">((HttpWebRequest)ObjWebRequest).UserAgent="5DO8";<br>
</div>
<br><br>3:指明协议的类型:<br><div class="code">ObjWebRequest.Method="POST";</div>
<br><br>可以是POST方式和Get方式.<br><br>4:发送传输的数据长度(如果无显示传送,亦可发送),如果设置了此项,发送的数据必须<font color="Red">恰好</font>满足此值.<br><div class="code">
<br>ObjWebRequest.ContentLength=Stringdata.ToCharArray().Length;<br>
</div>
<br><br>5:设置传入请求的MIME内容类型:<br><div class="code">
<br>ObjWebRequest.ContentType="application/x-www-form-urlencoded";//Post<br>ObjWebRequest.ContentType="text/xml";//SOAP<br>
</div>
<br><br>6:使用GetRequestStream()方法获取发送的流的句柄:<br><div class="code">
<br>System.IO.StreamdataStream=ObjWebRequest.GetRequestStream();<br>
</div>
<br><br>7:发送数据:<br><div class="code">dataStream.Write(byteArray,0,byteArray.Length);</div>
<br><br>注:byteArray是一个Byte数组,它的获取可以是:<br><div class="code">byte[]byteArray=UTF8Encoding.GetBytes(dataP);</div>
<br><br>8:关闭Request流.<br><div class="code">
<br>dataStream.Close();<br>
</div>
<br>这是必须的,知道Close,服务器不会响应输出,还可以选择调用System.IO.Stream.Close()关闭流.<br><br>9:利用GetResponse()获取Response对象.<br><div class="code">WebResponseObjresponse=ObjWebRequest.GetResponse();<br>
</div>
<br><br><br>9*:你可以获取返回给客户端的HTTP输出状态的字符串,默认是公共状态消息"OK"<br><div class="code">
<br>//Console.WriteLine(((HttpWebResponse)Objresponse).StatusDescription);<br>if(((HttpWebResponse)Objresponse).StatusDescription!="OK"){<br>//..结束这一切<br>}<br><br>
</div>
<br><br>10:获取响应流的句柄:<br><div class="code">Streamdata=Objresponse.GetResponseStream</div>
<br><br>11:保存数据或者直接读出,例如直接输出到浏览器.<br><div class="code">
<br>dataStream=ObjResponse.GetResponseStream();<br><br>StreamReaderr=newStreamReader(dataStream);<br>Response.Write(HttpUtility.HtmlEncode(r.ReadToEnd()));<br>
</div>
<br>或者使用StreamWriter对象保存:<br><br><div class="code">StreamoutStream=System.IO.File.Create("Temp.data");<br>byte[]buffer=newbyte[1024];<br>intl;<br>do{<br>l=dataStream.Read(buffer,0,buffer.Length);<br>if(l&gt;0)outStream.Write(buffer,0,l);<br>}while(l&gt;0);<br><br>outStream.Close();</div>
<br><br>此方式可以保存二进制数据.<br><br>12:关闭流.<br><div class="code">Objresponse.Close();<br>
</div>
<br><br><br>例如发送Soap文件时候,可以创建XmlDocument对象,直接使用Save()即可:<br><div class="code">
<br>XmlDocumentdoc=newXmlDocument();<br>doc.Load(System.Web.HttpContext.Current.Server.MapPath(@"~")+@"/"+xmlfile);<br>HttpWebRequestreq=(HttpWebRequest)WebRequest.Create(@"http://s:81/5do8/webs.asmx");<br><br>req.ContentType="text/xml;charset=/"utf-8/"";<br>req.Accept="text/xml";<br>req.Method="POST";<br><br>Streamstm=req.GetRequestStream();<br>doc.Save(stm);<br>stm.Close();<br>WebResponseresp=req.GetResponse();<br>stm=resp.GetResponseStream();<br>StreamReaderr=newStreamReader(stm);<br>Response.Write(HttpUtility.HtmlEncode(r.ReadToEnd()));<br>
</div>
<br><br>-1:利用ASP发送XMLHTTP对象:
<div class="code">
<br>Setxmlhttp=server.CreateObject("Msxml2.XMLHTTP")<br>xmlhttp.Open"POST",url,false<br>xmlhttp.setRequestHeader"Content-Type","text/xml;charset=utf-8"<br>xmlhttp.setRequestHeader"HOST","s"<br>xmlhttp.setRequestHeader"Content-Length",LEN(SoapRequest)<br>xmlhttp.setRequestHeader"SOAPAction","http://s"<br>xmlhttp.Send(SoapRequest)<br>Response.Writexmlhttp.Status&amp;””<br>Response.Writexmlhttp.StatusText<br>Setxmlhttp=Nothing<br><br>
</div>
<br>获取的时候:<br><div class="code">
<br><br>Ifxmlhttp.Status=200Then<br>SetxmlDOC=server.CreateObject("MSXML.DOMDocument")<br>xmlDOC.load(xmlhttp.responseXML)<br>xmlStr=xmlDOC.xml<br>SetxmlDOC=nothing<br>xmlStr=Replace(xmlStr,"&lt;","&lt;")<br>xmlStr=Replace(xmlStr,"&gt;","&gt;")<br>Response.writexmlStr<br>Else<br>Response.Writexmlhttp.Status&amp;""<br>Response.Writexmlhttp.StatusText<br>Endif<br>请求正确则给出完整响应,请求不正确(如账号,密码不对)响应的内容就会信息不完整.<br>取出响应里的数据,如下:<br>Ifxmlhttp.Status=200Then<br>SetxmlDOC=server.CreateObject("MSXML.DOMDocument")<br>xmlDOC.load(xmlhttp.responseXML)<br>Response.WritexmlDOC.documentElement.selectNodes("//LoginByAccountResult")(0).text<br>SetxmlDOC=nothing<br>Else<br>Response.Writexmlhttp.Status&amp;""<br>Response.Writexmlhttp.StatusText<br>Endif<br>显示某节点各个属性和数据的FUNCTION:<br>Functionshowallnode(rootname,myxmlDOC)<br>ifrootname&lt;&gt;""then<br>setnodeobj=myxmlDOC.documentElement.selectSingleNode("//"&amp;rootname&amp;"")'当前结点对像<br>nodeAttributelen=myxmlDOC.documentElement.selectSingleNode("//"&amp;rootname&amp;"").attributes.length'当前结点属性数<br>returnstring=returnstring&amp;"&lt;BR&gt;节点名称:"&amp;rootname<br>ifnodeobj.text&lt;&gt;""then<br>returnstring=returnstring&amp;"&lt;BR&gt;节点的文本:("&amp;nodeobj.text&amp;")"<br>endif<br>returnstring=returnstring&amp;"&lt;BR&gt;{&lt;BR&gt;"<br>ifnodeAttributelen&lt;&gt;0then<br>returnstring=returnstring&amp;"&lt;BR&gt;属性数有"&amp;nodeAttributelen&amp;"个,分别是:"<br>endif<br>fori=0tonodeAttributelen-1<br>returnstring=returnstring&amp;"&lt;li&gt;"&amp;nodeobj.attributes(i).Name&amp;":"&amp;nodeobj.getAttribute(nodeobj.attributes(i).Name)&amp;"&lt;/li&gt;"<br>next<br>ifnodeobj.childNodes.Length&lt;&gt;0then<br>ifnodeobj.hasChildNodes()andlcase(nodeobj.childNodes.item(0).nodeName)&lt;&gt;"#text"then'是否有子节点<br>setchildnodeobj=nodeobj.childNodes<br>childnodelen=nodeobj.childNodes.Length<br>returnstring=returnstring&amp;"&lt;BR&gt;&lt;BR&gt;有"&amp;childnodelen&amp;"个子节点;&lt;BR&gt;分别是:"<br>fori=0tochildnodelen-1<br>returnstring=returnstring&amp;"&lt;li&gt;"&amp;childnodeobj.item(i).nodeName&amp;"&lt;/li&gt;"<br>next<br>endif<br>endif<br>returnstring=returnstring&amp;"&lt;BR&gt;}&lt;BR&gt;"<br>response.writereturnstring<br>setnodeobj=nothing<br>endif<br>EndFunction<br>可以这样用:<br>Ifxmlhttp.Status=200Then<br>SetxmlDOC=server.CreateObject("MSXML.DOMDocument")<br>xmlDOC.load(xmlhttp.responseXML)<br>showallnode"LoginByAccountResponse",xmlDOC’调用SHOWALLNODE<br>SetxmlDOC=nothing<br>Else<br>Response.Writexmlhttp.Status&amp;""<br>Response.Writexmlhttp.StatusText<br>Endif<br><br>POST:<br><br>url="http://s/"<br>SoapRequest="username="&amp;username&amp;"&amp;password="&amp;password<br>Setxmlhttp=server.CreateObject("Msxml2.XMLHTTP")<br>xmlhttp.Open"POST",url,false<br>xmlhttp.setRequestHeader"Content-Type","application/x-www-form-urlencoded"’注意<br>xmlhttp.setRequestHeader"HOST","<br>"<br>xmlhttp.setRequestHeader"Content-Length",LEN(SoapRequest)<br>xmlhttp.Send(SoapRequest)<br><br>Response.Writexmlhttp.Status&amp;””<br>Response.Writexmlhttp.StatusText<br>Setxmlhttp=Nothing<br><br>'POST<br>Ifxmlhttp.Status=200Then<br>SetxmlDOC=server.CreateObject("MSXML.DOMDocument")<br>xmlDOC.load(xmlhttp.responseXML)<br>showallnode"string",xmlDOC'调用SHOWALLNODE<br>SetxmlDOC=nothing<br>Else<br>Response.Writexmlhttp.Status&amp;""<br>Response.Writexmlhttp.StatusText<br>Endif<br><br>
</div>
<br>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics