winForm中如何实现网络请求WebAPI获取数据

winForm中如何实现网络请求WebAPI获取数据,第1张

使用HttpWebRequest类:

```C#

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://example.com/api/data")

request.Method = "GET"

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())

{

using (StreamReader reader = new StreamReader(response.GetResponseStream()))

{

string json = reader.ReadToEnd()

// Do something with the json

}

}

```

2. 使用WebClient类:

```C#

using (WebClient wc = new WebClient())

{

string json = wc.DownloadString("http://example.com/api/data")

// Do something with the json

}

```

有解决方案:建立CS程序与WebApi服务器的点对点连接(通过Tcp/ip),然后WebApi发起请求搏漏简,CS程序返回请求结果。

详细一点:CS端开启tcp.ip的监听端口搜凳,webapi服务器连接这个端口,需要掌握网络编程技能。百度搜索C# 网络编程相关的源码。

若CS端没有开启外网IP,还需要穿透NAT(类似QQ聊天基裤,网络编程高级篇),这里有文章参考一下: C#实现UDP穿透NAT(UDP打洞)完整版(原)

www.csframework.com/archive/2/arc-2-20110713-1693.htm

建议这样试试看:

亲测可用,主要还是Url的拼接,这个需要客户给出格式

/// <summary>

/// 与客户WMS系统通讯获取数据

/// </summary>

/// <param name="url">接口,需要拼接成运缺客户规定的格式</param>

/// <param name="data">旁唯辩请求数据,需要拼接成客户规定的Json格式</param>

/// <returns>全部数据</returns>

public  string Post(string url, string data)

{

try

{

//创建请求

HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest

//设置请求方法

request.Method = "Post"

request.Referer = ""

//将数据转换为UTF8字节流

byte[] bytes = Encoding.UTF8.GetBytes(data)

//设置发送的字节数

request.ContentLength = bytes.Length

//设置发送内容格式

request.ContentType = "application/jsoncharset=UTF-8"

//获取用于写入请求数据的流对象

Stream stream = request.GetRequestStream()

//向当前流写入数据,发送请求

stream.Write(bytes, 0, bytes.Length)

//接收返回流,通过Web访问对象获取响应内容

HttpWebResponse response = (HttpWebResponse)request.GetResponse()

//通过响应内容流创建StreamReader对象

//StreamReader sr = new StreamReader(request.GetRequestStream(), Encoding.UTF8)//写错,山伍导致一直读取不了数据

StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8)

//读取所有内容

string retString = sr.ReadToEnd()

//关闭流

sr.Close()

stream.Close()

if (response != null)

{

//关闭响应流

response.Close()

}

if (request != null)

{

//取消请求

request.Abort()

}

return retString

}

catch (Exception ex)

{

throw ex

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12397371.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存