winform客户端利用webClient实现与Web服务端的数据传输

由于项目需要,最近研究了下WebClient的数据传输。关于WebClient介绍网上有很多详细介绍,大概就是利用WebClient可以实现对Internet资源的访问。无外乎客户端发送请求,服务端处理请求、回应请求。所以,我下面就简单描述下学习过程中遇到的一些问题:

1.关于Winform客户端请求

WebClient wc = new WebClient();//初始化webclient
string path = "http://192.168.1.115:8089/Handler1.ashx";
Uri uri = new Uri(path + "?RequestType=uploaddata");
string str="Requestdata";
wc.UploadStringAsync(uri, str);

关于此处的UploadStringAsync方法,WebClient下有多个方法,UploadStringAsync是异步调用,服务器响应后会有一个回调函数,可以在回调函数里查看服务端返回来的信息。如下

void client_UploadStringCompleted(object o, UploadStringCompletedEventArgs e)
 {
    if (e.Error == null)
    {
     if (e.Result == "ok")
         this.DialogResult = DialogResult.OK;
     else
         MessageBox.Show("相应处理", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
 }

但是client_UploadStringCompleted事件提前注册。

2.关于Web服务端处理请求

客户端发出了请求,如果请求的Url没有问题的话,服务端就会收到请求,这里注意到,之前请求的Url中有一个Handler1.ashx(一般处理程序),用来处理客户端发出的请求。这样Web服务端就可以直接在事件处理文件中处理请求信息,不需有前台页面。

      public void ProcessRequest(HttpContext context)
        {
            if (context.Request["RequestType"] == "uploaddata")
            {
                context.Response.ContentType = "text/plain";
                context.Response.Write("ok");
            }
         }

在if中可以对请求进行处理,然后向客户端发出响应的回应。

3.关于报错之“远程服务器返回错误(500):内部服务器错误”

之前在做简单客户端与服务端交互string类型的数据时并没有遇到这个问题,但是后来研究服务器如何向客户端返回datatable或者dataset数据时(一般在程序中都是要用到,程序基本不可能只有string数据交互),发现总是报这个错,查了一上午的资料,也没有解决自己的问题,网上的解决办法有很多种,例如:远程服务器是否更改了文件,远程服务器没有权限诸如此类,总之是服务端的问题,但是服务端的什么问题,由于没有办法测试服务端(因为Web服务端发布了的,这样winform端才能访问),所以一直不知道怎么解决。下午上班时,突然想到是不是自己的代码有问题。就在另一个程序上测试了自己的代码,发现语法上没问题,但是逻辑上有问题。这才终于解决了困扰自己的问题。之后再遇到这样的问题,首先就会去想是否代码问题,若不是,再翻阅相关资料进行查询。

以上均为自己的拙见,若有不对,敬请批评指正。欢迎交流。(后期应该会继续更新)

winform客户端利用webClient实现与Web服务端的数据传输

时间: 2024-12-20 13:24:59

winform客户端利用webClient实现与Web服务端的数据传输的相关文章

如何提高Web服务端并发效率的异步编程技术

作为一名web工程师都希望自己做的web应用能被越来越多的人使用,如果我们所做的web应用随着用户的增多而宕机了,那么越来越多的人就会变得越来越少了,为了让我们的web应用能有更多人使用,我们就得提升web应用服务端的并发能力.那么我们如何做到这点了,根据现有的并发技术我们会有如下选择: 第一个做法:为每个客户端发送给服务端的请求都开启一个线程,等请求处理完毕后该线程就被销毁掉,这种做法很直观,但是在现代的web服务器里这种做法已经很少使用了,原因是新建一个线程,销毁一个线程的开销(开销是指占用

Android服务端开发1-使用Eclipse搭建Java Web服务端

本篇博客介绍如何使用Eclipse来创建一个Java Web程序,为后面讲通过Android客户端跟服务端进行交互打下基础,关于服务端可以选用的程序很多,主流的搭配是Android客户端+PHP服务端,我们也可以使用Android客户端+Java EE服务端这样的搭配,就看公司是以哪种方式提供了. 创建一个Java Web程序,没有特别复杂的流程,我们先准备一下原材料: 1. Eclipse(注:这个不是ADT Bundle,最好到官网下载针对开发Java EE的IDE,如果可以的话,选中MyE

C语言 Socket入门示例2——模拟远程CMD(客户端向服务器发送命令,服务端执行该命令)

只要把上一篇文章"C语言 Socket入门示例1"中的两段程序彻底搞懂,那么再看本文就没有任何难度了,因为仅仅是对上篇文章中服务端代码的简单修改扩充.但是简单修改过后,功能变得异常强大,犹如一个远程CMD.随着不断深入学习,功能将会变得越来越强大.欢迎大家评论指点. 1.服务端(Server): #include <stdio.h> #include <winsock2.h> #pragma comment(lib,"ws2_32.lib")

搭建一个java web服务端

最近也是做了一个简单的java web 项目,由于以前也是没接触过,在这里记录下搭建一个web服务端的过程. 一般我们做一个服务端要么在本地自己的电脑上先安装环境,一般是windows系统,主要安装jdk + tomcat + mysql,这些安装教程网上都有,也很简单,我这里就不多说了,我要讲的是在一个远程linux服务器上搭建web服务端环境. 对于一个liunx服务器,我们可以使用xshell等终端工具登录来操作远程服务器,使用xshell的好处是,我们可以使用rz ,sz命令上传上载文件

如何利用cURL和python对服务端和web端进行接口测试

工具描述 cURL是利用URL语法在命令行方式下工作的文件传输工具,是开源爱好者编写维护的免费工具,支持包括Windows.Linux.Mac等数十个操作系统,最新版本为7.27.0,但是我推荐大家使用7.26.0,从这里可以下载7.26.0版本. 以下是官方介绍的翻译: cURL是一个使用URL语法来传输数据的命令行工具,支持DICT,FILE,FTP,FTPS,GOPHER,HTTP,HTTPS,IMAP,IMAPS,LDAP,LDAPS,POP3,POP3S,RTMP,RTSP,SCP,S

利用 Apache Synapse 模拟 Web 服务

Apache Synapse 是一个简单.轻量级的高性能企业服务总线 (ESB),它是在 Apache Software Foundation 的 Apache License Version 2.0 下发布的.使用 Apache Synapse,您可以通过 HTTP.HTTPS.Java™ Message Service (JMS).简单邮件传输协议 (SMTP).邮局协议版本 3 (POP3).FTP.文件系统和许多其他传输介质筛选.转换.路由.操作和监视经过大型企业系统的 SOAP.二进制

HTTP协议(2)配置Web服务端LAMP

在之前的课程中,我们都是通过Appserv或PHPStudy来搭建Web服务环境,在这里介绍如何通过CentOS7.5来搭建一个真实的LAMP(Linux+Apache+ MySQL +PHP)环境.在部署LAMP时,软件安装的一般顺序是Linux→Apache→PHP→MySQL.Apache的软件名和所对应的服务名都是httpd,在CentOS7中默认没有安装Apache.因而首先需要安装启动httpd服务,并将其设为开机自动运行. [[email protected] ~]# yum in

[译]利用React Router4实现的服务端直出渲染(SSR)

我们已经熟悉React 服务端渲染(SSR)的基本步骤,现在让我们更进一步利用 React RouterV4 实现客户端和服务端的同构.毕竟大多数的应用都需要用到web前端路由器,所以要让SSR能够正常的运行,了解路由器的设置是十分有必要的 基本步骤 路由器配置 前言已经简单的介绍了React SSR,首先我们需要添加ReactRouter4到我们的项目中 $ yarn add react-router-dom # or, using npm $ npm install react-router

Web服务端开发需要考虑的问题

API设计 是否Restful. 首先需要清楚,Restful是一种风格而不是规范,不存在必须遵守的问题. Restful本质上是对HTTP API进行有效的分类. 分类是应该的,可以让API组织变得有序.层次清晰 一定要以Restful的风格分类吗? Restful风格的特点 url表示的只是资源,没有动作,所以只会出现名词,不会出现动词 这样的url不对 /accounts/1/transfer/499 应该是这样 /accounts/1/transactions/499 想想传统的logi