如何在html页面中访问Web服务?静态网站?

时间:2013-04-09 05:42:46

标签: web-services

在HTML页面中访问Web服务,我有一个静态站点,我想访问该站点中的一个Web服务。

5 个答案:

答案 0 :(得分:4)

如果您正在运行静态站点,我假设您要访问的Web服务不在同一个域,而您无法在服务器端设置代理 。如果两个假设都是正确的,则不能使用"普通" ajax因为浏览器中的原始策略相同。您最好的选择可能是JSONP,因为它受到许多网络服务的支持。

我将举一个简单的例子。检索存储在密钥" mykey"下的值。使用JavaScript中的openkeyval存储webservice和jQuery,调用

$.ajax({
    url: "http://api.openkeyval.org/mykey",
    dataType: "jsonp",
    success: function(data){
        // do something with data
    }
});

并存储一个值,然后调用

$.ajax({
    url: "http://api.openkeyval.org/store/",
    data: "mykey=myvalue",
    dataType: "jsonp",
    success: function(data){
        // your value has been succesfully saved
    }
});

请注意,现在很多人认为Cross-origin resource sharing (CORS)是JSONP的更好替代方案。但是,开始使用它可能有点困难。

答案 1 :(得分:1)

试试Javascript,这是示例代码

 <html>
  <head>
   <title>Hello World</title>
    <script language="JavaScript">
     function InitializeService(){
      service.useService(http://localhost/MyWebService.asmx?wsdl, "HelloWorldService");
      service.HelloWorldService.callService("HelloWorld");
     }
     function ShowResult(){
      alert(event.result.value);
     }
    </script>
   </head>
  <body onload="InitializeService()" id="service" 
        onresult="ShowResult()"> </body>
 </html>

答案 2 :(得分:1)

我同意benedolph提供的答案,但我认为我可能会添加违背他的假设的想法。

这些步骤可能比你想要的更复杂,但实际上并不是非常复杂 - 如果不是免费的话也会很便宜。但至少留出一整天......

1)如果您没有,请获取一个域来代理多个服务。每月免费或低至5美元(视您的需要而定)。

2)编写代理。这可以用您选择的语言完成 - Java(推荐Play框架),PHP(推荐CodeIgniter框架),Javascript(Node),Ruby(Rails)等。您可以做什么(从高级别)像:

- Read request. This would be a url you configure on the server app. 
  The url might look something like,  "http://yourdomain.net/get/mashup/{service1:yourfirstservice.com, service2:yournextservice.com,...}. 

- Parse the json into individual requests and load each of them from your server app. (The fastest way that I've found to complete this task is by using cURL's multi_init and multi_exec functions, via PHP. That said, Java and Ruby have equally powerful multi-threading capabilities).

- Put the results of each query into a json map.

- Once all responses come back, output the json response from your server and consume on your client side.

无论如何,这就是我要做的。希望我的回答有所帮助!

布兰登

答案 3 :(得分:0)

您也可以使用Jquery,但您访问的Web服务必须与发出请求的jQuery脚本位于同一个域中。它必须遵守相同的域策略。

$(document).ready(function() {
    $('#Save').click(function() {
        $.ajax({
            url: "mydomain.com/test/ws/getData",
            type: "POST",
            dataType: "json",
            data: "{BizName:'" + BizName + "'}",
            contentType: "application/json; charset=utf-8",
            success: function(msg) {
                $('#status').html('Id: '+msg['d']['Id']);
            },
            error: function(e) {
                $('#status').innerHTML = "Unavailable";
            }
        });
    });
); 

答案 4 :(得分:0)

它是可能的,但你需要一些jquery,javascript,ajax for it