目录
SAP Webservice接口部分
C#下创建WebService接口
更新工具
1、在VS2022下创建Web Form 表间,需要更新VS2022开发工具
创建Web Form程序
输入ASP.NET
选择ASP.NET Web应用程序
填写项目名称,选择存储的位置,勾选,选择框架,点击“创建”:
选择“空”,点击“创建”:
添加Web服务
在项目上右击:
在项目上右击:
点击“添加”—“新建项”:
选择Web服务,点击“添加“:
在这个文件添加这两个方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
namespace WebService_Application1
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
//[WebMethod]
//public string HelloWorld()
//{
// return "Hello World";
//}
[WebMethod]
public string Age(int a1, int a2)
{
int AT = a1 + a2;
return AT.ToString();
}
[WebMethod]
public string Gender(int a1)
{
string GD = "";
if (a1 == 1)
{
GD = "男";
}
else if (a1 == 0)
{
GD = "女";
}
else
{
GD = "人妖";
}
return GD;
}
}
}
运行
点击可以进入WebService测试:
输入值,点击调用:
运行结果:
默认的命名空间
可以修改默认的命名空间为:http://www.lhy.org/。
可以修改默认的命名空间
WSDL
发布
在项目上右击,点击“发布”:
选择“文件夹”,点击下一步:
选择文件夹的位置,点击完成:
点击发布:
复制发布生成的文件到Web服务器根目录
目前没有找到Web服务器根目录
浏览器访问报错
HTTP 错误 404.0 - Not Found
解决
IIS版本
可以查看IIS版本:
创建网址
1、WIN+R打开运行,输入“inetmgr.exe”,点击确定:
打开IIS,右击网站,点击“添加网站”。
按下“TAB”键,找到右下角的确定按钮,点击回车。
输入用户名和密码:
找到“目录浏览”,点击“打开功能”,点击“启用”:
点击“启用”:
效果如下:
要双击“MIME类型”按钮:
添加这个文件拓展名 .asmx,MIME类型:text/plain:
弄完之后,在浏览器里显示下面的结果:
发现这里没有办法解析这种脚本,显示的是普通文本。
解决
只是显示普通文本的话,就需要检查电脑内的IIS管理器。
应用程序池:DefaultAppPool
在应用程序池的选项里的内容改成:DefaultAppPool:
默认文档
可以为网站配置一个默认文档,WebService1.asmx:
在这里插入图片描述
在这里插入图片描述
IIS安装ASP
点击“确定”:
点击“关闭”:
双击“ASP”:
点击“应用”:
检查IIS的启用情况
打开这些功能:
点击确定按钮之后,等待应用成功,之后重启电脑
重启电脑
需要重启电脑,否则应用失败:
点击运行,在浏览器上运行:
报错2
打开PowerShell,输入下面的命令:
执行完之后:
或者在这里配置也可以,给登录的用户这里给他加上这个组:
访问网址
在完成上面的配置之后:
在浏览器中访问这个网址,访问成功!
C#调用WebService接口
更新工具
1、在VS2022下创建Web Form 表间,需要更新VS2022开发工具:
创建Web Form程序
输入ASP.NET
选择ASP.NET Web应用程序
填写项目名称,选择项目位置,勾选,选择框架,点击“创建”:
选择“空”,点击“创建”:
添加窗体
右击项目,点击”添加“----”Web窗体“:
输入WebServiceFrom的名称,点击确定:
添加SAP Web Service引用
右击,添加—Web服务引用:
点击“高级”:
点击“添加Web引用”:
找WebServices网址
进入SOA网址,https://mysap.goodsap.cn:44300/sap/bc/webdynpro/sap/appl_soap_management
点击这个按钮:
复制这个网址:
填写网址,回车之后,填写用户名和密码:
再次输入SAP用户名和密码:
输入用户名和密码,这一步系统会弹出两次,所以需要输入两次一样的用户名和密码;
点击“添加引用”按钮:
双击这个“设置”:
修改设置的域名
将这个域名改成ip地址:
可以“WIN+R”进入运行,ping一下。
116.6.45.30
修改引用名称
这个改成WebReference:
结果如下:
在表单上创建一个文本框和一个GridView.
如果没有工具箱,就在视图里点击。
整体的控件如下:
给表单加事件
在表单的装载事件里写入代码
需要的变量和代码
导出参数:
这里需要添加这些:
上面的YTEMPINFOR要改成 YEMP_INFO,因为我自己创建的结构是这个,跟那个名字不同。
导入参数填成:
导出参数填成:
返回的表:
一开始没有添加USER_TABLE_IN等字段和代码,是后面加上的,所以要在服务那里,右击,选择“一致性检查”进行更新。
再点这里更新引用:
填写下面的代码:
代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace SAP_WebApplication2
{
public partial class WebForm1_Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Net.NetworkCredential c = new System.Net.NetworkCredential("KN089", "Hs87654321");
WebReference.Z_WS002 s = new WebReference.Z_WS002();
WebReference.ZTestRfcSumLhy data = new WebReference.ZTestRfcSumLhy();
WebReference.YempInfo User_Table = new WebReference.YempInfo();
User_Table.Id = "1001";
User_Table.EmpName = "lhy";
User_Table.EmpNumber = "lhy001";
User_Table.Gender = "女";
User_Table.Age = "23";
data.InAge1 = 10;//传入参数
data.InAge2 = 10;//传入参数
data.UserTableIn = User_Table; //传入表
data.UserTableOut = new WebReference.YempInfo[1];//传出表
var res = s.ZTestRfcSumLhy(data);//传出参数
string result = res.SumAge.ToString();
TextBox1.Text = result;
WebReference.YempInfo[] makt = res.UserTableOut;//传出表
this.GridView1.AutoGenerateColumns = true;
this.GridView1.DataSource = res.UserTableOut;
this.GridView1.DataBind();
}
}
}
运行测试
点击进行测试:
后面又更新了RFC函数,然后激活RFC函数,点击“一致性检查”。
再更新Web引用,运行后报错了:
后面发现是设置那里又恢复成域名了,要改成ip地址
之后重新运行,结果如下: