.NET Web Service接口生成及调用

一 Web Service生成

1.新建一个ASP.NET网站 (我用的是Visual Studio2008)

a.打开Visual Studio2008,点击文件—>新建—>网站

b.选择ASP.NET网站

 

2.在解决方案资源管理器下找到刚新建的网站,选中右键,选择“添加新项”

3.选择“Web服务”

4.打开WebService.cs,如下图,可以在改文件中进行逻辑代码的编写,[WebMethod]是声明一个web服务方法,可以供服务端调用(相当于暴露给客户端),若不想被客户端暴露则不用写上[WebMethod]。

 

//  以如下代码 实现从数据库学生表中根据学号读取学生信息更新学生信息功能为例

//WebService.cs文件

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Data;

/// <summary>
///WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://student.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
// [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {

    public WebService () {
        //如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }
    
    private SqlCommand cmd=null;
    private SqlConnection conn=null;
    private String sql=null;
    ///创建数据库连接方法封装
    public void openDatabase() {
        conn = new SqlConnection();
        conn.ConnectionString ==System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
        if (conn.State == ConnectionState.Closed)
        {
            conn.Open();
            //Response.Write("<script>alert('Connected!');</script>");
        }
    }
  
  ///根据学号查询学生信息
  ///web service 的返回值必须是可序列化的,而qlDataReader类型不能被序列化会出错,这里用DataSet类型
     [WebMethod]
    public DataSet SelStudent(String xuehao)
    {
            openDatabase();
            String sql = "select * from S where 学号='" + xuehao + "'";
            SqlDataAdapter sqlad = new SqlDataAdapter(sql, conn);//创建SqlDataAdapter对象并执行sql查询
            DataSet ds = new DataSet();
            sqlad.Fill(ds);
            if (conn.State != ConnectionState.Closed)
            {
                conn.Close();
            }
            return ds;
    }
    
     //更新修改学生信息
    //数据库中身高、体重为float类型,若height、weight为“”空会出错,将其赋值null
     [WebMethod]
     public Boolean UpdateStudent(String xuehao, String height, String weight,String used_name,String email)
     {
         String strError = "";
         String sql = "update S set ";
         
         if (height.Trim() == "") { 
             height = null;
         }
         else { 
             float.Parse(height);
             sql=sql+"身高="+height+",";
         }
         if (weight.Trim() == "")
         {
             weight = null;
         }
         else
         {
             float.Parse(weight);
             sql=sql+ "体重=" + weight + ",";
         }
         if (used_name.Trim() != "") sql = sql + "曾用名='" + used_name + "',";//曾用名为数据库字段名
         if (email.Trim() != "") sql = sql + "电子邮件='" + email+ "',";
         sql = sql.TrimEnd(',') + " where 学生学号='" + xuehao + "'"; 
         try
         {
             openDatabase();
             cmd = new SqlCommand(sql,conn);
             int count = cmd.ExecuteNonQuery();
             return !(count<1);
         }
         catch(Exception e){
             strError = "更新数据库失败:" +e.Message;
             return false;
         }
         finally
         {
             if (conn.State != ConnectionState.Closed)
             {
                 conn.Close();
             }
         }
     }
    
}

5.启动运行项目,在浏览器中可以查看测试调用页面,可以看到SelStudent、UpdateStudent方法可以被调用

6.点击SelStudent进入,输入xuehao(学号)可以进行测试调用

二 Web Service客户端调用

1.用IIS发布我们刚刚生成的Web Service服务

a.打开IIS,找到“网站”,右键“添加网站”,物理路径选择之前建的项目所在路径,我这里是WebService2所在路径,端口要填写未被占用的。添加完毕可以在浏览器中输入 示例(我的):http://127.0.0.1:53414/WebService.asmx进行查看

2.新建ASP.NET 网站,在解决方案资源管理器下找到新建项目名,右键选择“添加服务引用”

3. 地址:主机地址:端口号/+.asm文件,端口号即IIS发布设定的端口,点击前往,会显示服务(我的是显示WebService)

4.如下图会生成ServiceReference1

5.在Default.aspx.cs中编写调用  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ServiceReference1.WebServiceSoapClient ws = new ServiceReference1.WebServiceSoapClient();
        DataSet ds=ws.SelStudent("201344444");
       Label1.Text = ds.Tables[0].Rows[0][0].ToString();
    }
}

6.运行项目在浏览器查看调用成功

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
### 回答1: 我可以回答这个问题。.NET 6 可以通过使用 WebService 类来调用 Web 服务。你需要提供 Web 服务的 URL,还需要定义要调用Web 方法和必要的参数。然后,你可以使用 WebService 类实例的 Invoke 方法来调用 Web 方法并获取响应。 ### 回答2: 在.NET 6 中调用 Web Service 服务非常简单。可以按照以下步骤进行操作: 1. 首先,在.NET 6 项目中添加对 Web Service 的引用。可以通过右键点击项目,然后选择“添加” -> “服务引用”来完成这一步骤。 2. 在弹出的“服务引用”对话框中,输入 Web Service 的 URL。这个 URL 是指向 Web Service 的 WSDL(Web Services Description Language)文件的链接。然后点击“添加引用”按钮。 3. 在引用添加完成后,可以在代码中使用生成的代理类来调用 Web Service 的方法。代理类会自动处理与 Web Service 的通信细节,使开发变得更加简单。 4. 通过创建代理类的实例,可以直接调用 Web Service 的方法。例如,如果 Web Service 提供了一个名为“GetData”的方法,可以使用代理类实例的“GetData”方法来调用它,传入相应的参数。 5. 调用 Web Service 方法后,可以获取返回的结果。根据 Web Service 方法的定义,可能会返回一个或多个结果。可以根据具体情况进行处理。 6. 最后,记得在使用完 Web Service 后关闭代理类实例,以释放资源。 总的来说,通过在.NET 6 中添加 Web Service 引用,并使用生成的代理类实例来调用相应的方法,可以方便地与 Web Service 进行通信和交互。这为开发人员提供了一种简单快捷的方式来利用 Web Service 的强大功能。 ### 回答3: 在.NET 6中,调用Web服务有多种方式。我将介绍两种常用的方法。 首先,你可以使用.NET的内置类库`HttpClient`来调用Web服务。首先,你需要在项目中添加对`System.Net.Http`的引用。然后,可以通过以下代码创建一个`HttpClient`对象,并发送HTTP请求: ```csharp using System; using System.Net.Http; using System.Threading.Tasks; public class Program { static async Task Main(string[] args) { HttpClient client = new HttpClient(); HttpResponseMessage response = await client.GetAsync("http://example.com/api/service"); string result = await response.Content.ReadAsStringAsync(); Console.WriteLine(result); } } ``` 在上面的示例中,我们创建了一个`HttpClient`对象,并使用`GetAsync`方法发送了一个GET请求到指定的URL。然后,我们可以通过`response.Content.ReadAsStringAsync()`方法读取响应的内容,并打印输出。 另一种方法是使用`WCF(Windows Communication Foundation)`来调用Web服务。首先,你需要在项目中添加对`System.ServiceModel`的引用。然后,你可以使用`ChannelFactory`和服务契约来创建和调用Web服务。以下是一个示例: ```csharp using System; using System.ServiceModel; public class Program { static void Main(string[] args) { BasicHttpBinding binding = new BasicHttpBinding(); EndpointAddress address = new EndpointAddress("http://example.com/api/service"); ChannelFactory<IMyService> factory = new ChannelFactory<IMyService>(binding, address); IMyService service = factory.CreateChannel(); // 调用服务方法 string result = service.MyMethod(); Console.WriteLine(result); factory.Close(); } } [ServiceContract] public interface IMyService { [OperationContract] string MyMethod(); } ``` 在上面的示例中,我们首先创建了一个`BasicHttpBinding`对象和一个`EndpointAddress`对象,它们分别用于指定绑定和服务的地址。然后,我们使用`ChannelFactory`和服务契约(即`IMyService`接口)创建了一个服务实例。最后,我们可以通过调用服务实例的方法来调用Web服务,并输出结果。 以上是.NET 6中调用Web服务的两种常见方法。你可以根据具体情况选择适合的方法来实现你的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值