`

C#中关于Send WebRequest 方法和数据处理

    博客分类:
  • C#
阅读更多
   很久不更新博客了,这次大概说一下C#中的Send WebRequest,众所周知,.NET网络编程在测试中是非常常见的,具体来说,比如我们如果测试一个API,通过Send WebRequest的方式来进行API层面的功能测试,然后用Selenium完成前端的验证,这种模式应该说是比较方便而通用的,具体以其中最常见的HTTP request为例,当我们需要传输数据时,需要
1)地址:Address作为Webrequest参数实例化,然后设定相应属性,比如Method(Get还是Post等等)
2)数据:Data作为HttpRequest的数据流写入:

XmlResponse = null;
ResponseCode = HttpStatusCode.Unused;
ServerResponse = String.Empty;

参数处理部分
//Format the data
string output = data.Aggregate(String.Empty, (current, keyValuePair) => current + ("&" + keyValuePair.Key + "=" + HttpUtility.UrlEncode(keyValuePair.Value)));
var encoding = new UTF8Encoding();
//设置PostData变量将output进行处理,最终得到byte[] d作为最终数据写入到WebRequest中
var Postdata = Encoding.ASCII.GetBytes(output);
                byte[] d = encoding.GetBytes(output.Substring(1, output.Length - 1));

var address = TargetUrl;
//GET部分的数据处理
if (method.ToUpperInvariant() == "GET")
                    address=address+output;

//POST部分的数据处理
WebRequest request = WebRequest.Create(address) as HttpWebRequest;
//Add post process
if (request == null)
  throw new Exception("WebRequest object is null.");

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = d.Length;

ServerResponse = String.Empty;

//数据读取及处理部分
using (Stream dataStream = request.GetRequestStream())
  {
     dataStream.Write(d, 0, d.Length);
     dataStream.Close();

     using (var response = (HttpWebResponse)request.GetResponse())
        {
          ResponseCode = response.StatusCode;
          using (Stream myStream = response.GetResponseStream())
            {
               if (myStream != null)
                            {
                                var readStream = new StreamReader(myStream, Encoding.UTF8);
                                ServerResponse = readStream.ReadToEnd();
                            }
                        }
                        response.Close();
            }
         }


                if (ResponseCode == HttpStatusCode.OK)
                {
                    if (loadXml)
                        LoadXml();
                    return true;
                }
                   
                return false;
分享到:
评论

相关推荐

    C#实现通过HttpWebRequest发送POST请求实现网站自动登陆

    4. **发送请求**:通过`GetRequestStream`方法获取请求流,并将数据写入流中。 5. **接收响应**:发送完数据后,调用`GetResponse`方法获取响应对象,并读取返回的内容。 #### 示例代码分析 下面是一个具体的示例...

    C# send post&get

    ### C# 发送 POST 和 GET 请求的实现方法 在 C# 开发中,发送 HTTP 请求(包括 GET 和 POST)是常见的需求之一。本篇文章将基于提供的文件内容介绍如何使用 C# 来发送这两种类型的请求,并获取服务器返回的数据。 ...

    C#三种模拟自动登录和提交POST信息的实现方法

    ### C#三种模拟自动登录和提交POST信息的实现方法 #### 概述 在现代软件开发过程中,模拟自动登录及提交POST信息的需求十分常见。这种需求通常出现在自动化测试、数据抓取等场景中。本文将详细介绍如何使用C#语言...

    C# 获取网络信息

    在C#中获取网络信息是一项基本且重要的任务,它可以帮助开发者了解网络状态,进行数据传输或者实现网络通信。下面将详细阐述如何在C#中获取网络信息。 首先,我们需要了解C#中用于网络编程的主要类库——`System...

    C#获取网页源代码的5种方法

    ### C# 获取网页源代码的五种方法 在软件开发特别是网络爬虫或者自动化测试领域,经常需要通过程序抓取网页源代码。本篇文章将详细介绍五种使用C#语言实现的网页源代码抓取方法,并对每种方法进行详细解析。 #### ...

    C#全能速查宝典

    分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用的属性、方法、类和各种技术,...

    c#网络编程17实例

    C#中的`System.Net.Sockets.TcpClient`和`TcpListener`类用于建立和管理TCP连接,而计费机制则可能涉及到时间计算和数据统计。 3. **浏览器模拟**:这通常需要实现HTTP协议,使用`System.Net.WebRequest`和`...

    C#网络编程-socket类介绍

    在客户端,Socket的Connect方法用于连接到服务器,Send和Receive方法用于数据传输。而在服务器端,我们需要使用Bind方法绑定Socket到特定的IP地址和端口,然后可能需要使用Listen方法监听连接请求,Accept方法接受新...

    12个C#网络操作程序源码合集.rar

    开发者可以通过设置SmtpClient的属性和方法,如Server、Port、Credentials等,然后使用Send方法发送邮件。 6. **UDP通信**:UDP是一种无连接的协议,适用于实时数据传输。UdpClient类用于发送和接收UDP数据报。源码...

    C#网络编程

    一旦连接建立,双方就可以通过Send和Receive方法交换数据。 2. **UDP编程**:UDP(User Datagram Protocol)是无连接的、不可靠的传输协议。C#中的UdpClient和UdpServer类简化了UDP通信。UdpClient用于发送和接收...

    C#.Net 网络 程序 开发 Socket篇

    Socket可以被理解为两个进程之间的通信通道,无论是客户端还是服务器端,通过创建Socket对象,可以使用Send/SendTo方法发送数据,使用Receive/ReceiveFrom方法接收数据。在.NET中,Socket类是Winsock32 API的托管...

    Visual_C#网络编程.doc

    例如,`Connect`方法连接到服务器后,可以使用`Send`方法发送数据,然后使用`Receive`方法接收回应。在服务器端,通常会使用`Listen`方法来等待客户端的连接请求,一旦有连接,`Accept`方法会返回一个新的`Socket`...

    C#.net同步异步SOCKET通讯和多线程总结

    同时,网络编程中应充分考虑到各种可能的异常情况,如连接失败、数据接收错误等,合理地捕获和处理异常,增强程序的健壮性。 #### 结论 C#.NET中的Socket编程为开发者提供了构建高性能、高可用网络应用的能力,...

    远程获取以及操作网页源码(C#),socket通信

    在IT行业中,网络编程是不可或缺的一部分,特别是在C#这样的多用途编程语言中。本文将深入探讨如何使用C#进行远程获取网页源码以及利用Socket进行通信。我们将关注`HttpWebRequest`、`HttpWebResponse`和`Socket`这...

Global site tag (gtag.js) - Google Analytics