使用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
建议这样试试看:
/// <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
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)