zoukankan      html  css  js  c++  java
  • C#提交数据到服务器并返回的处理

    1:利用System.Net.WebRequest的Create方法创建WebRequest对象:

    System.Net.WebRequest ObjWebRequest =System.Net.WebRequest.Create(urlP);

    异常类型:
    NotSupportedException :requestUri 中指定的请求方案未注册。
    ArgumentNullException :requestUri 为空引用(Visual Basic 中为 Nothing)。
    SecurityException 调用方没有连接到请求的 URI 或请求重定向到的 URI 上的权限。

      2:对请求进行预先身份验证,如果无明确的要求,此项可以空.

    ObjWebRequest.Credentials = CredentialCache.DefaultCredentials;

    如果需要按照特别的验证协议,需要强制转换成HttpWebRequest类型:

     ((HttpWebRequest)ObjWebRequest).UserAgent = "5DO8";

     3:指明协议的类型:

    ObjWebRequest.Method = "POST";


      可以是POST方式和Get方式.

      4:发送传输的数据长度(如果无显示传送,亦可发送),如果设置了此项,发送的数据必须恰好满足此值.


    ObjWebRequest.ContentLength = Stringdata.ToCharArray().Length;

      5:设置传入请求的 MIME 内容类型:

    ObjWebRequest.ContentType="application/x-www-form-urlencoded";//Post
    ObjWebRequest.ContentType="text/xml";//SOAP

      6:使用GetRequestStream()方法获取发送的流的句柄:

    System.IO.Stream dataStream = ObjWebRequest.GetRequestStream();

      7:发送数据:

    dataStream.Write (byteArray, 0, byteArray.Length);

      注:byteArray是一个Byte数组,它的获取可以是:

    byte[] byteArray = UTF8Encoding.GetBytes(dataP);

      8:关闭Request流.

    dataStream.Close ();

     这是必须的,知道Close,服务器不会响应输出,还可以选择调用System.IO.Stream.Close()关闭流.

      9:利用GetResponse()获取Response对象.

    WebResponse Objresponse = ObjWebRequest.GetResponse();

      9*:你可以获取返回给客户端的 HTTP 输出状态的字符串,默认是公共状态消息"OK"

    //Console.WriteLine (((HttpWebResponse)Objresponse).StatusDescription);
    if ( ((HttpWebResponse)Objresponse).StatusDescription != "OK"){
    //..结束这一切
    }

      10:获取响应流的句柄:

    Stream data = Objresponse.GetResponseStream


      11:保存数据或者直接读出,例如直接输出到浏览器.


    dataStream = ObjResponse.GetResponseStream ();

    StreamReader r = new StreamReader(dataStream);
    Response.Write(HttpUtility.HtmlEncode(r.ReadToEnd()));


     或者使用StreamWriter对象保存:


    Stream outStream =System.IO.File.Create( "Temp.data" );
    byte []buffer = new byte[1024];
    int l;
    do{
    l = dataStream.Read(buffer,0,buffer.Length);
    if(l>0) outStream.Write(buffer,0,l);
    } while(l>0);

    outStream.Close();


    此方式可以保存二进制数据.

    信息来自: 优秀设计网[www.yxsj.net] 详文参考:http://www.yxsj.net/ArticleIntro.Asp?Id=11330

  • 相关阅读:
    Windows上git输错一次密码不在提示输入密码
    JSON Web Token 简介
    Springboot+Shiro+Jwt实现权限管理
    Springboot配置外部容器使用JNDI读取数据源
    Springboot解决Main方法启动无法注入JNDI
    Springboot2.1.6版本部署resin4.0.62
    Java解决多线程无法@Autowired注入,手动获取Bean对象
    Linux设置Vim显示行号
    Linux使用wget后台下载
    排查生产环境CPU过高的问题
  • 原文地址:https://www.cnblogs.com/ddlzq/p/1609826.html
Copyright © 2011-2022 走看看