WebApi的方法如何暴露给客户端调用呢?

aierda 2018-09-04 10:36:38
WebApi(或者ABP)的方法如何暴露给客户端调用呢?
像WebService那样,只要引用了服务地址就知道服务端提供了哪些方法给我们客户端调用。
WebApi如何可以做到呢?我的客户端是winform
...全文
886 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
小鑫心 2018-09-19
  • 打赏
  • 举报
回复
Swagger UI
  • 打赏
  • 举报
回复
传统的轻量级 http 调用并不需要“只要引用了服务地址就知道服务端提供了哪些方法给我们客户端调用”。你写一个 Word 文档告诉调用者功能和输入输出参数就可以了。
数据的流 2018-09-05
  • 打赏
  • 举报
回复
我是小数位 2018-09-05
  • 打赏
  • 举报
回复
引用 5 楼 CXJ0062008 的回复:
     private string PostWebRequest(string postUrl, string paramData)
{
string ret = string.Empty;
try
{
if (!postUrl.StartsWith("http://"))
return "";
Encoding enc = Encoding.GetEncoding("utf-8");

byte[] byteArray = enc.GetBytes(paramData); //转化
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);//验证服务器证书回调自动验证
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Timeout = 18000000;//超时设置
webReq.ReadWriteTimeout = 18000000;//超时设置
webReq.Method = "POST";
webReq.ContentType = "application/x-www-form-urlencoded";
webReq.Credentials = CredentialCache.DefaultCredentials;

//获得用户名密码的Base64编码
string code = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", "用户名","密码")));

//添加Authorization到HTTP头
webReq.Headers.Add("Authorization", "Basic " + code);

webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
newStream.Close();

HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
ret = sr.ReadToEnd();
sr.Close();
response.Close();
newStream.Close();

}
catch (Exception ex)
{
throw ex;
}
return ret;
}

public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{ // 总是接受
return true;
}
我是小数位 2018-09-05
  • 打赏
  • 举报
回复
     private string PostWebRequest(string postUrl, string paramData)
{
string ret = string.Empty;
try
{
if (!postUrl.StartsWith("http://"))
return "";
Encoding enc = Encoding.GetEncoding("utf-8");

byte[] byteArray = enc.GetBytes(paramData); //转化
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);//验证服务器证书回调自动验证
HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(new Uri(postUrl));
webReq.Timeout = 18000000;//超时设置
webReq.ReadWriteTimeout = 18000000;//超时设置
webReq.Method = "POST";
webReq.ContentType = "application/x-www-form-urlencoded";
webReq.Credentials = CredentialCache.DefaultCredentials;

//获得用户名密码的Base64编码
string code = Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", "用户名","密码")));

//添加Authorization到HTTP头
webReq.Headers.Add("Authorization", "Basic " + code);

webReq.ContentLength = byteArray.Length;
Stream newStream = webReq.GetRequestStream();
newStream.Write(byteArray, 0, byteArray.Length);//写入参数
newStream.Close();

HttpWebResponse response = (HttpWebResponse)webReq.GetResponse();
StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
ret = sr.ReadToEnd();
sr.Close();
response.Close();
newStream.Close();

}
catch (Exception ex)
{
throw ex;
}
return ret;
}
  • 打赏
  • 举报
回复
webapi不能通过代理方式,如果你懂abp,就不应该问这么简单的问题,abp的service会自动创建api,假如你没设置禁止的attribute
  • 打赏
  • 举报
回复
客户端根本不关心什么 webapi,就是普通的 http post 方式访问服务就可以了!
assky124 2018-09-05
  • 打赏
  • 举报
回复
新建的项目自带Help的啊, {host}/Help 就列出你所有的API了
by_封爱 版主 2018-09-05
  • 打赏
  • 举报
回复
写个文档给客户端 或者做成DLL
exception92 2018-09-05
  • 打赏
  • 举报
回复
提供一个说明性的调用接口文档,每一个http对应的路径包含Controller/Action的名称及所需要的参数,winform端使用HttpClient的get/post等方法请求 等待返回数据即可。
圣殿骑士18 2018-09-05
  • 打赏
  • 举报
回复
就是跟访问普通网页一样的技术即可,HttpWebRequest。

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧