WebService是早期提供Web服务的一种形式(现在最新的方式是WebApi),其无关于编程语言,有java形式的WebService,也有C#形式的WebService。

我们在项目中,需要和其他外部系统进行接口对接时,常使用WebService或WebApi,这取决于对方提供服务接口的使用的是那种技术。

我们可以在本地模拟访问使用WebService形式编写的”WebService接口“(如何编写webservice demo以及在IIS上发布成服务请参看另外教程链接:https://blog.csdn.net/weixin_29431461/article/details/124615017)

需要注意的有几个易错点:

上面代码第16行要取消注释,否则会无法在客户端通过AJAX形式形式访问服务端的WebService。

另外需要注意的一点是:WebService项目的Web.config需要补充:支持访问形式配置、跨域问题解决配置,增加代码位置如图:

增加代码如下:

    <webServices>
<protocols>
<add name= "HttpPost"/>
<add name= "HttpGet"/>
</protocols>
</webServices>
    <!-- 解决跨域问题,追加以下代码:根据网络教程20230706-->

    <system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
<add name="Access-Control-Allow-Headers" value="x-requested-with,content-type"/>
<add name="Access-Control-Allow-Origin" value="*"/>
</customHeaders>
</httpProtocol>
</system.webServer>

之后,对WebService项目源码进行发布,然后利用IIS进行部署。

发布成功后的形式为:

以上说明我们以WebService形式提供的”服务“已经操作完毕了,那么,如何去访问这个服务?

其实WebService接口和WebApi接口形式几乎一模一样,WebService构成形式是:http://ip:port/asmx文件名.asmx(要有后缀)/待访问方法名;WebApi构成形式是:http://ip:port/Controller名称/待访问方法

我们可以在浏览器输入如上地址,测试得到方法返回值形式:

回到上面的问题,假如把我们上面发布的程序假想成是外部系统,或是我们要对接的系统。根据他提供给我们的这个接口地址,我们如何访问他,并拿到我们想要的数据呢?

访问WebService形式的接口有两种形式(就我知道的):通过前端Ajax形式、通过客户端程序添加服务引用形式。

本文以下先讲解通过前端Ajax形式访问WebService接口:

(1)可先写一个粗略的html结构的页面

(2)写相关页面触发事件(比如Button点击事件、页面加载事件等)

(3)点击事件脚本写一段Ajax脚本,异步调用WebService接口 (Ajax异步调用请求的多种方法可参考(取第1种):https://www.itgh.cn/post/eajci2b5.html)

(4)引入jquery包(因为第3步的$.Ajax()方法用的是jquery的方法)

(5)前端调试、看关键数据

前端代码如下:

通过浏览器打开,按F12进入调试模式,可以看到响应的结果数据已经拿到且正确:

===================================================

我们上面所举的例子是通过WebService接口访问的无参的函数,如果是有参的呢?

在WebService添加一个有参函数:

然后前端访问Ajax代码块,做些适应性修订:

通过前端页面调试,可以看到json格式返回的结果已拿到:

通过前端Ajax访问WebService形式的接口的更多相关文章

  1. ajax访问WebService跨域问题

    1.先看一个网站介绍,了解跨域问题    HTTP访问控制(CORS) 2.像谷歌.火狐浏览器对一些非简单请求会触发预检请求,首先使用 OPTIONS   方法发起一个预检请求到服务器,然而IE浏览器 ...

  2. 前端ajax访问 django 报错 POST http://127.0.0.1:8001/xxx 403 (Forbidden)

    前端使用 ajax 访问后端 django 程序 报错误: POST http://127.0.0.1:8001/xxx 403 (Forbidden) 错误原因: 参数中未携带 csrfmiddle ...

  3. 关于ajax访问webservice查询数据量稍微大一点,就会返回error500的解决方案

    只需要在web.config的configeration节点中增加如下子节点即可: <system.web.extensions>       <scripting>      ...

  4. ASP.NET MVC中使用ASP.NET AJAX异步访问WebService

    使用过ASP.NET AJAX的朋友都知道,怎么通过ASP.NET AJAX在客户端访问WebService,其实在ASP.NET MVC中使用ASP.NET AJAX异步访问WebService 也 ...

  5. java 访问 太平洋网ip接口,解决前端js 跨域访问失败问题

    前端 js访问太平洋网IP接口地址,返回结果是403 服务器拒绝处理异常, 于是,想到了使用 服务器端访问,然后再将查询结果返回的前端 这是Java的测试源码,[具体的contronller端源码懒得 ...

  6. Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题

        webservice 代码 /// <summary> /// MESService 的摘要说明 /// </summary> [WebService(Namespac ...

  7. 通过ajax访问aspx的CodeBehind中的方法

    引言 在项目中突然看到,aspx中的ajax可以访问aspx.cs中的方法,觉得很新奇,也许是lz少见多怪,不过,真的有发现新大陆似的那种兴奋,你也许知道这代表什么,学会了这种方式,代表你以后,可以建 ...

  8. 前端Ajax通过设置 timeout 参数,轮询后台API

    因为我连接的数据库在台湾,相距较远,所以conn.Open()方法打开极慢.前端Ajax访问API时,API的数据还未返回,前端Ajax访问已经超时. 所以设置一个轮询,设置相隔多少秒之后进行一次查询 ...

  9. 通过ajax访问Tomcat服务器web service接口时出现No 'Access-Control-Allow-Origin' header问题的解决办法

    问题描述 通过ajax访问Web服务器(Tomcat7.0.42)中的json web service接口的时候,报以下跨域问题: XMLHttpRequest cannot load http:// ...

  10. WebService---Android中访问WebService接口的方法

     最近公司有个项目需要从Android平台访问WebService接口,实现向发布的函数传递对象.在网上找了一些资料,发现使用ksoap2可以调用WebService传递对象.   需要引入ksoap ...

随机推荐

  1. HTTP请求使用http、socks代理demo,包含有认证和无认证

    package cn.daenx.myadmin.email.utils; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpU ...

  2. AtCoder Beginner Contest 382-E

    Problem 有无数包牌,每包有 \(N\) 张牌.在每一包牌中, 第 \(i\) 张牌是稀有牌,概率为 \(P_i\%\).每张牌是否稀有与其他牌是否稀有无关. 逐一打开包装,并获得每包中的所有卡 ...

  3. AtCoder Beginner Contest 381-E

    AtCoder Beginner Contest 381-E Problem 一个长度为奇数.最中间的那个字符是 /.左边所有字符都是都是 1.右边所有字符都是 2 的字符串被称为11/22 字符串. ...

  4. C# NativeAOT生成.so 库供Linux下C++调用

    html { overflow-x: initial !important } :root { --bg-color: #ffffff; --text-color: #333333; --select ...

  5. 十步,做一个基于Claw Cloud的天气推送

    作者:故事我忘了¢ 个人微信公众号:程序猿的月光宝盒 目录 前言 步骤分解 步骤一 步骤二 步骤三 步骤四 步骤五 步骤六 步骤七 步骤八 步骤九 步骤十 对应的节点,鼠标移上去点三个小点,点rena ...

  6. CRD的简单介绍

    介绍 Custom Resource Define 简称 CRD,是 Kubernetes(v1.7+)为提高可扩展性,让开发者去自定义资源的一种方式. CRD 资源可以动态注册到集群中,注册完毕后, ...

  7. ArrayList与LinkedList的增删改查

    ArrayList: 1 package com.lv.study.am.first; 2 3 //ArrayList 有下标 可重复 有序(添加到集合里面的顺序)不等于排序 4 5 6 import ...

  8. 全面剖析PHP8新特性:JIT编译器如何推动网站性能革命

    本文由 ChatMoney团队出品 在Web开发领域,提高网站的响应速度一直是开发者和企业所追求的目标.随着技术的不断进步,PHP8的发布为我们带来了一个全新的工具--JIT(Just-In-Time ...

  9. 数栈产品分享:Kafka—实时离不开的那个TA

    一.前言 随着技术不断的成熟及市场需求的日益旺盛,实时开发已经成为当前大数据开发不可或缺的一部分.在整个实时开发的链路中,数据采集需要写入到Kafka,数据处理也需要使用到Kafka.今天我们就针对K ...

  10. DRF案例

    1 反序列化更新,instance 就传要修改的对象,保证修改完成 def update(self, instance, validated_data): publish_id = validated ...