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>0)outStream.Write(buffer,0,l);<br>}while(l>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&””<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,"<","<")<br>xmlStr=Replace(xmlStr,">",">")<br>Response.writexmlStr<br>Else<br>Response.Writexmlhttp.Status&""<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&""<br>Response.Writexmlhttp.StatusText<br>Endif<br>显示某节点各个属性和数据的FUNCTION:<br>Functionshowallnode(rootname,myxmlDOC)<br>ifrootname<>""then<br>setnodeobj=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"")'当前结点对像<br>nodeAttributelen=myxmlDOC.documentElement.selectSingleNode("//"&rootname&"").attributes.length'当前结点属性数<br>returnstring=returnstring&"<BR>节点名称:"&rootname<br>ifnodeobj.text<>""then<br>returnstring=returnstring&"<BR>节点的文本:("&nodeobj.text&")"<br>endif<br>returnstring=returnstring&"<BR>{<BR>"<br>ifnodeAttributelen<>0then<br>returnstring=returnstring&"<BR>属性数有"&nodeAttributelen&"个,分别是:"<br>endif<br>fori=0tonodeAttributelen-1<br>returnstring=returnstring&"<li>"&nodeobj.attributes(i).Name&":"&nodeobj.getAttribute(nodeobj.attributes(i).Name)&"</li>"<br>next<br>ifnodeobj.childNodes.Length<>0then<br>ifnodeobj.hasChildNodes()andlcase(nodeobj.childNodes.item(0).nodeName)<>"#text"then'是否有子节点<br>setchildnodeobj=nodeobj.childNodes<br>childnodelen=nodeobj.childNodes.Length<br>returnstring=returnstring&"<BR><BR>有"&childnodelen&"个子节点;<BR>分别是:"<br>fori=0tochildnodelen-1<br>returnstring=returnstring&"<li>"&childnodeobj.item(i).nodeName&"</li>"<br>next<br>endif<br>endif<br>returnstring=returnstring&"<BR>}<BR>"<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&""<br>Response.Writexmlhttp.StatusText<br>Endif<br><br>POST:<br><br>url="http://s/"<br>SoapRequest="username="&username&"&password="&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&””<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&""<br>Response.Writexmlhttp.StatusText<br>Endif<br><br>
</div>
<br>
分享到:
相关推荐
UnityWebRequest下载超大资源
UnityWebRequest下载网络资源的小框架,支持断点续传、多文件同时下载。主要功能只有两个脚本,是用的Unity5.6.2导出的。 注意:只能断点续传网络资源,本地资源无法断点续传!
UnityWebRequest远端下载,支持断点续传、多文件同时下载 亲测可以使用 可以自定义修改进度
使用unity自带的UnityWebRequest实现文件分段下载,可扩展断点续传,功能已经写好,只需自己控制断点续传本地缓存文件长度读取并传入函数参数即可
2022年 UnityWebRequest.isNetworkError”已过时,弃用,解决方法
Unity 最新UnityWebRequest下载网络资源,支持断点续传、多文件同时下载,同时显示下载进度,和 显示网速,今天贴出来和大家分享 删除Editor文件夹即可
Unity 中通过UnityWebRequest 以POST形式传JSON格式(键值对格式)的参数请求数据。
Unity 中通过UnityWebRequest 以GET形式传authorization 的参数请求数据。 注意: 以Header头文件的形式发送请求,authorization要放入请求头部。 以头文件形式发起请求进行Token验证,token为Authorization中的...
C# sliverlight 中 WebClient与WebRequest以及HttpWebRequest 的关系
一个用WebRequest获取网页内容的实例.
c# 使用WebRequest实现多文件上传.docx
实用WebRequest 获取html源代码
基于UnityWebRequest,支持断点下载。简单好用下载快速。两个主要脚本文件,以及一个DownTest测试文件。使用时直接调用即可,具体参看Test脚本的使用
主要介绍了UnityWebRequest前后端交互实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
CSDN助手V2.5[C#].rar利用 WebRequest 自动发贴或自动获取网页内容
silverlight基于 WebRequest的多文件上传完整源码,能显示上传进度,自己写的代码,拿出来赚积分啦。
UnityWebRequest 简单资源下载 支持断点续传,下载进度,下载速度(每秒) 使用方法:开启一个协程,调用DownLoadFile即可, 需要传入3个Action,分别时下载进度,下载文件与当前文件总大小进度,和下载速度
使用 WebRequest() 函数在 MQL5.com 网站上发布含有图像的消息例程。这是如何使用登录名和口令进行认证,并在消息里插入图像的例子。
unity最新支持断点续传的方便,代码简单易懂。demo版本unity2021,参考文章:https://blog.csdn.net/chunyu90225/article/details/118545989
每次请求,服务端是不同的Session, 提供了解决方法登录保持Session的解决方法。