asp.net 网络服务 (.asmx)
asp.net webservices (.asmx)
内部网络服务使用 soap 通过 HTTP 工作。但是当我们尝试访问一个 [WebMethod]
的 Web 服务时,事情是如何在 URL 和 jquery ajax 的基础上开始工作的? jQuery ajax SOAP 还在发挥作用吗?如果是如何?如果不是,为什么不呢?您可以使用下面的示例来简化事情。
下面是来自 asmx 的代码:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class MyService : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
可以用 AJAX
调用 WebMethods
,因为传输是 HTTP
。您可以在互联网和 SO:
上找到很多这样的例子
jQuery AJAX call to an ASP.NET WebMethod
Calling ASP.Net WebMethod using jQuery AJAX
SOAP
是有效负载的信封(具有一些附加功能)。是否要在 WebMethod
中使用它取决于您。
以下是如何在 Web 应用程序项目中创建 Hello World 服务:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
以下是使用 jQuery 使用它的方法:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script>
console.log($.ajax);
$.ajax({
type: "POST",
url: "http://localhost:55501/WebService1.asmx/HelloWorld",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response.d) {
alert(response.d);
}
});
</script>
来自服务器的响应将是 {d: "Hello World"}
因为 jQuery 将添加接受 header "application/json".
以下是您如何从控制台应用程序使用它:
static void Main(string[] args)
{
var client = new HttpClient();
var uri = new Uri("http://localhost:55501/WebService1.asmx/HelloWorld")
// Get xml
var response = client.PostAsync(uri, new StringContent("")).Result;
Console.WriteLine(response.Content.ReadAsStringAsync().Result);
Console.WriteLine();
// Get Json
var response1 = client.PostAsync(uri,
new StringContent("", Encoding.UTF8, "application/json")).Result;
Console.WriteLine(response1.Content.ReadAsStringAsync().Result);
}
将输出:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">Hello World</string>
{"d":"Hello World"}
内部网络服务使用 soap 通过 HTTP 工作。但是当我们尝试访问一个 [WebMethod]
的 Web 服务时,事情是如何在 URL 和 jquery ajax 的基础上开始工作的? jQuery ajax SOAP 还在发挥作用吗?如果是如何?如果不是,为什么不呢?您可以使用下面的示例来简化事情。
下面是来自 asmx 的代码:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class MyService : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
可以用 AJAX
调用 WebMethods
,因为传输是 HTTP
。您可以在互联网和 SO:
jQuery AJAX call to an ASP.NET WebMethod
Calling ASP.Net WebMethod using jQuery AJAX
SOAP
是有效负载的信封(具有一些附加功能)。是否要在 WebMethod
中使用它取决于您。
以下是如何在 Web 应用程序项目中创建 Hello World 服务:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class WebService1 : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
以下是使用 jQuery 使用它的方法:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
<script>
console.log($.ajax);
$.ajax({
type: "POST",
url: "http://localhost:55501/WebService1.asmx/HelloWorld",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(response.d) {
alert(response.d);
}
});
</script>
来自服务器的响应将是 {d: "Hello World"}
因为 jQuery 将添加接受 header "application/json".
以下是您如何从控制台应用程序使用它:
static void Main(string[] args)
{
var client = new HttpClient();
var uri = new Uri("http://localhost:55501/WebService1.asmx/HelloWorld")
// Get xml
var response = client.PostAsync(uri, new StringContent("")).Result;
Console.WriteLine(response.Content.ReadAsStringAsync().Result);
Console.WriteLine();
// Get Json
var response1 = client.PostAsync(uri,
new StringContent("", Encoding.UTF8, "application/json")).Result;
Console.WriteLine(response1.Content.ReadAsStringAsync().Result);
}
将输出:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">Hello World</string>
{"d":"Hello World"}