精华内容
下载资源
问答
  • webclient学习1.webclient什么

    千次阅读 2020-05-23 12:29:47
    1.webclient什么WebClient 软件包是 RT-Thread 自主研发的,基于 HTTP 协议的客户端的实现,它提供设备与 HTTP Server 的通讯的基本功能。 2.软件包功能特点 WebClient 软件包功能特点: 支持 IPV4/IPV6 地址 ...

    1.webclient是什么?

    WebClient 软件包是 RT-Thread 自主研发的,基于 HTTP 协议的客户端的实现,它提供设备与 HTTP Server 的通讯的基本功能。

    2.软件包功能特点

    WebClient 软件包功能特点:

    支持 IPV4/IPV6 地址

    WebClient 软件包会自动根据传入的 URI 地址的格式判断是 IPV4 地址或 IPV6 地址,并且从其中解析出连接服务器需要的信息,提高代码兼容性。

    支持 GET/POST 请求方法

    HTTP 有多种请求方法(GET、POST、PUT、DELETE等),目前 WebClient 软件包支持 GET 和 POST 请求方法,这也是嵌入式设备最常用到的两个命令类型,满足设备开发需求。

    支持文件的上传和下载功能

    WebClient 软件包提供文件上传和下载的接口函数,方便用户直接通过 GET/POST 请求方法上传本地文件到服务器或者下载服务器文件到本地,文件操作需要文件系统支持,使用前需开启并完成文件系统的移植。

    支持 HTTPS 加密传输

    HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer)和 HTTP 协议一样是基于 TCP 实现的,实际上是在原有的 HTTP 数据外部添加一层 TLS 加密的封装,从而达到加密传输数据的目的。HTTPS 协议地址区别于 HTTP 地址,是以 https 开头的。WebClient 软件包中的 TLS 加密方式依赖 mbedtls 软件包 实现。

    完善的头部数据添加和处理方式

    HTTP 头部信息用于确定当前请求或响应的数据和状态信息,在发送 GET/POST 请求时头部的拼接成为用户操作的一大难题,正常的做法是手动逐行输入或使用字符串拼接方式,WebClient 软件包中提供简单的添加发送请求头部信息的方式,方便用户使用。对于请求返回的头部信息,往往用户需要获取头部字段数据,WebClient 软件包同样提供了 通过字段名获取字段数据的方式,方便获取需要的数据。

    3.软件包目录结构

    3.1WebClient 软件包目录结构如下所示:

    webclient
    +---docs 
    │   +---figures                     // 文档使用图片
    │   │   api.md                      // API 使用说明
    │   │   introduction.md             // 介绍文档
    │   │   principle.md                // 实现原理
    │   │   README.md                   // 文档结构说明
    │   │   samples.md                  // 软件包示例
    │   │   user-guide.md               // 使用说明+---version.md                  // 版本
    +---inc                             // 头文件
    +---src                             // 源文件
    +---samples                         // 示例代码
    │   │   webclient_get_sample        // GET 请求示例代码+---webclient_post_sample       // POST 请求示例代码
    │   LICENSE                         // 软件包许可证
    │   README.md                       // 软件包使用说明
    +---SConscript                      // RT-Thread 默认的构建脚本
    

    3.2 许可证
    WebClient 软件包遵循 Apache-2.0 许可,详见 LICENSE 文件。

    3.3 依赖
    RT_Thread 3.0+
    mbedtls 软件包(如果开启 HTTPS 支持)

    3.4获取软件包
    使用 WebClient 软件包需要在 RT-Thread 的包管理中选中它,具体路径如下:

    RT-Thread online packages
        IoT - internet of things  --->
             [*] WebClient: A HTTP/HTTPS Client for RT-Thread
             [ ]   Enable debug log output
             [ ]   Enable webclient GET/POST samples
             [ ]   Enable file download feature support
                   Select TLS mode (Not support)  --->
                       (x) Not support
                       ( ) SAL TLS support
                       ( ) MbedTLS support
                   Version (latest)  --->
    

    Enable debug log output:开启调试日志显示,可以用于查看请求和响应的头部数据信息;
    Enable webclient GET/POST samples :添加示例代码;
    Enable file download feature support :开启文件下载功能支持(wget 命令支持);
    Select TLS mode :配置开启 HTTPS 支持,选择支持的模式;
    Not support:不支持 TLS 功能; SAL TLS support:配置 SAL 组件中 TLS 功能支持,SAL 组件中抽象
    TLS 操作,用户还需要手动配置开启使用的 TLS 软件包类型(目前只支持 MbedTLS 软件包); MbedTLS support:配置
    MbedTLS 功能支持; Version :配置软件包版本。

    配置完成后让 RT-Thread 的包管理器自动更新,或者使用 pkgs --update 命令更新包到 BSP 中。

    4.工作原理

    WebClient 软件包主要用于在嵌入式设备上实现 HTTP 协议,软件包的主要工作原理基于 HTTP 协议实现,如下图所示:
    在这里插入图片描述
    HTTP 协议定义了客户端如何从服务器请求数据,以及服务器如何把数据传送给客户端的方式。HTTP 协议采用了请求/响应模型。 客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

    在 HTTP 协议的实际使用过程中,一般遵循以下流程:

    1. 客户端连接到服务器

      通常是通过 TCP 三次握手建立 TCP 连接,默认 HTTP 端口号为 80。

    2. 客户端发送 HTTP 请求(GET/POST)

      通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据四部分组成

    3. 服务器接受请求并返回 HTTP 响应

      服务器解析请求,定位请求资源。服务器将需要发送的资源写到 TCP 套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据四部分组成。

    4. 客户端和服务器断开连接

      若客户端和服务器之间连接模式为普通模式,则服务器主动关闭 TCP 连接,客户端被动关闭连接,释放 TCP 连接。若连接模式为 keepalive 模式,则该连接保持一段时间,在该时间内可以继续接收数据。

    5. 客户端解析响应的数据内容

      客户端获取数据后应该先解析响应状态码,判断请求是否成功,然后逐行解析响应报头,获取响应数据信息,最后读取响应数据,完成整个 HTTP 数据收发流程。

    学习链接

    展开全文
  • 1.利用WebClient访问服务方式 public void startFun(string name) {  string urlString = http://baidu.com;  webClientObj = new WebClient();  webClientObj.DownloadStringCompleted += new Down

    1.利用WebClient访问服务方式

    public void startFun(string name)

    {

          string urlString = http://baidu.com;

            webClientObj = new WebClient();

           webClientObj.DownloadStringCompleted += new DownloadStringCompletedEventHandler (webClientObj_DownloadStringCompleted);

        webClientObj.DownloadStringAsync(new Uri(urlString));

    }

    void webClientObj_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)

    {

               if (e.Error == null)

               {

                   test_fun(e.Result);

                                 }

               else

               {

                   MessageBox.Show(e.Error.InnerException.Message);

                }

    }

    public void test_fun(string str)

    {

    MessageBox.Show(str);

    }

     

    2.利用WebClient方式异步访问服务

    //定义全局变量

    List<string> urlStringList = new List<string>();

    WebClient webClientObj = null;

    public void startFun(string name)

    {               

    for (int i = 0; i <4; i++ )    

    urlString = “url string ”+i; urlStringList.Add(urlString);      

    }

         webClientObj = new WebClient();    

    webClientObj.DownloadStringCompleted += new DownloadStringCompletedEventHandler (webClientObj_DownloadStringCompleted);    

    if (uriStringList != null && uriStringList.Count != 0)        

          webClientObj.DownloadStringAsync(new Uri(uriStringList[0]), "0");

    }

    void webClientObj_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)

    {           

            if (e.Error == null)           

             {

                                     int idx = Convert.ToInt32((string)e.UserState);

                                     test_fun(e.Result);               

                                    if (idx < uriStringList.Count - 1)

                                     {

                                        webClientObj.DownloadStringAsync(new Uri(urlStringList[idx + 1]), "" + (idx + 1));               

                                       }               

                                     else               

                                     {

                                                     //code ….               

                                         }           

                }

                else           

                {               

                             MessageBox.Show(e.Error.InnerException.Message);           

                 }

    }

     public void test_fun(string str)

    {          

    MessageBox.Show(str);

    }

    展开全文
  • 目前我有一个应用程序从我的web应用程序接收...使用webclient上传文件到文件服务器类我试图在C#.NET中使用webclient类。string filePath = "C:\\test\\564.flv";try{WebClient client = new WebClient();NetworkCr...

    目前我有一个应用程序从我的web应用程序接收上传的文件。我现在需要将该文件传输到恰好位于同一网络上的文件服务器(但这可能并非总是如此)。使用webclient上传文件到文件服务器类

    我试图在C#.NET中使用webclient类。

    string filePath = "C:\\test\\564.flv";

    try

    {

    WebClient client = new WebClient();

    NetworkCredential nc = new NetworkCredential(uName, password);

    Uri addy = new Uri("\\\\192.168.1.28\\Files\\test.flv");

    client.Credentials = nc;

    byte[] arrReturn = client.UploadFile(addy, filePath);

    Console.WriteLine(arrReturn.ToString());

    }

    catch (Exception ex)

    {

    Console.WriteLine(ex.Message);

    }

    位于192.168.1.28处的计算机是一个文件服务器并具有共享c:\ Files。 截至目前,我收到登录失败的错误用户名或密码错误,但我可以打开资源管理器并成功输入该路径登录名。我也可以使用远程桌面登录,所以我知道用户帐户的作品。

    对此错误的任何想法? 是否可以直接传输文件?有了webclient类或者其他一些类?

    +0

    是账户的域帐户还是机器账户? –

    2008-11-04 21:40:37

    +0

    该帐户是机器上的用户。问题是我们正在转向新的体系结构,并且我们有两个文件服务器通过虚拟IP进行群集和负载平衡。所以我需要能够将文件发送给VIP。 –

    2008-11-04 21:53:31

    展开全文
  • 主要介绍了spring boot使用WebClient调用HTTP服务代码示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 利用WebClient类向服务器上载文件
  • 举个例子:通过A浏览器 去访问B服务器上的web站点 ,B服务器上的web站点程序利用webClient类去访问C服务器上的web站点,我想问的是:webclient是模拟B的浏览器还是A浏览器?会话(session)是A的还是B的呢? 求...
  • 在项目中用到了将WebClient上传文件到服务器,经在网上查找,自己添加到项目中进行实验了一番了,特将此代码拷贝上来:/// /// WebClient上传文件至服务器/// /// 文件名,全路径格式/// 服务器文件夹/// public ...

    在项目中用到了将WebClient上传文件到服务器,经在网上查找,自己添加到项目中进行实验了一番了,特将此代码拷贝上来:

    ///

    /// WebClient上传文件至服务器

    ///

    /// 文件名,全路径格式

    /// 服务器文件夹

    ///

    public static bool Upload(string localFilePath, string serverFolder, string newFileName)

    {

    //获取服务器的IP

    string ip = PublicMethod.GetIp();

    if (!serverFolder.EndsWith("/") && !serverFolder.EndsWith(@"\"))

    {

    serverFolder = serverFolder + "/";

    }

    string uriString = "http://" + ip + "/" + serverFolder + newFileName;

    /// 创建WebClient实例

    WebClient myWebClient = new WebClient();

    myWebClient.Credentials = CredentialCache.DefaultCredentials;

    // 要上传的文件

    FileStream fs = new FileStream(localFilePath, FileMode.Open, FileAccess.Read);

    判断文件大小

    //string strFileSize = DAL.DataBaseOperator.GetValueFromApplictionConfig("fileSize");

    //int fileSize = Convert.ToInt32(strFileSize) * 1024 * 1024;

    //if (fs.Length > fileSize)

    //{

    //    MessageBox.Show("您上传的附件不能超过 " + strFileSize + "M");

    //    return false;

    //}

    BinaryReader r = new BinaryReader(fs);

    //使用UploadFile方法可以用下面的格式

    myWebClient.UploadFile(uriString, "PUT", localFilePath);

    byte[] postArray = r.ReadBytes((int)fs.Length);

    Stream postStream = myWebClient.OpenWrite(uriString, "PUT");

    if (postStream.CanWrite)

    {

    postStream.Write(postArray, 0, postArray.Length);

    }

    else

    {

    MessageBox.Show("文件目前不可写!");

    }

    System.Windows.Forms.Application.DoEvents();

    postStream.Close();

    }

    catch (Exception err)

    {

    MessageBox.Show("文件上传失败,请稍候重试~");

    //DAL.Log.FileLogSys.FileLog.WriteLog(err.Message + err.StackTrace);

    return false;

    }

    return true;

    }

    ///

    /// 获取服务器的IP

    ///

    ///

    public static string GetIp()

    {

    string Ip = "";

    string strConn = DBUtil.SqlConnectionManager.ConnectionString();

    int startIndex = strConn.IndexOf("=") + 1;

    int endIndex = strConn.IndexOf(";");

    int totalLength = strConn.Length;

    int length = totalLength - startIndex - (totalLength - endIndex);

    Ip = strConn.Substring(startIndex, length);

    return Ip;

    }

    展开全文
  • WebClient

    2013-08-29 09:49:00
    Mircsoft在dotnet1.1框架下提供的向 URI 标识的资源发送... WebClient类不能被继承,在dotnet1.1框架中已经为我们提供了WebRequest和WebResponse两个强大的类来处理向URI标示的资源和获取数据了。然后,不足的是利...
  • WebClient 对象在通过代理服务器(如ISA Server 等)进行交互时需要额外的配置,使用方法如下:   //创建 代理服务器设置对象 的实例 System.Net.WebProxy wp= new System.Net.WebProxy("172.24.2.98:8080&...
  • 34. 使用WebClient调用REST服务 如果你的classpath上有Spring WebFlux,那么你还可以选择使用WebClient来调用远程REST服务,与RestTemplate相比,这个客户端具有更强的功能性,并且完全具有响应性。你可以使用...
  • 使用WebClient从FTP服务器下载文件…

    千次阅读 2014-08-07 13:25:06
    从FTP服务下载文件 和在「文件下载保存」中介绍的方法一样。如果使用WebClient.DownloadFile类可以简单些。 下面的例子是从ftp://localhost/test.txt下载文件,保存到"C:\test.txt"路径的方法。 [VB.N
  • 学习spring5 里面的webClient 通过它调用restful服务 目标 :搭建一个REST服务;简单例子为获取getMyName和获取第二个别名 2.src结构 3.运行效果 2020-01-27 23:12:44.480 INFO 59990 --- [ main] ...
  • 定义WebClient使用的操作类: 操作...WebClient上传文件至Ftp服务: //// <summary> /// WebClient上传文件至Ftp服务 /// </summary> /// <param name="fileNamePath">文件名,全路径格式&l...
  • 转载:http://www.cnblogs.com/chenqingwei/archive/2010/06/25/1765250.html WebClient 对象在通过代理服务器(如ISA Server 等)进行交互时需要额外的配置,使用方法如下://创建
  • Titanium-WebClient Titanium Web服务客户端
  • 转:http://blog.csdn.net/net_lover/archive/2003/08/01/6938.aspx.NET 提供了许多上载...WebClient类也有两个方法可以上载,UploadFile和OpenWrite方法,下面就是一个实际的例子,两种方法都有代码:结果如下:Form1.
  • 利用WebClient类向服务器上载文件(转孟子的) 今天看了TERRYLEE老大的一篇写上传的.里面有个WEBCLIENT我就上网查了一下,找到孟子大人的一篇文章.感觉不错,就转了过来.大家一起学习下..NET 提供了许多上载文件的...
  • Symbian S60中使用http协议访问服务器资源的例子
  • 网络客户端 Muonium服务器API的官方Web客户端 构建设置 # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # build for production with minification ...
  • WebClient 对象在通过代理服务器(如ISA Server 等)进行交互时需要额外的配置,使用方法如下: //创建 代理服务器设置对象 的实例System.Net.WebProxy wp= new System.Net.WebProxy("172.24.2.98:8080");//代理...
  • WebClient访问FTP服务器时505错误

    千次阅读 2015-02-09 20:15:33
    项目中需要访问ftp,采用WebClient访问,方式如下: try { var client = new WebClient(); client.Credentials = new NetworkCredential("username", "password"); var data = client.DownloadString...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,159
精华内容 4,863
关键字:

webclient是什么服务