从另一台服务器调用Webservice

时间:2013-01-13 20:55:08

标签: asp.net web-services jquery

我创建了一个名为MailSerderWS.asmx的网络服务,其代码在AppCode/MailSerderWS.cs,在本地PC上工作正常,但我对其在生产中的使用有一些疑问:

  1. 基本上我正在创建此服务以从我的服务器发送电子邮件,因为我的服务器不支持asp,所以不能使用编码,所以我打算将webservice放在我的朋友服务器上并调用webservice从我的服务器发送邮件站点。
  2. 在我的朋友服务器上部署此Web服务之前,我想在我的本地计算机上使用我的html网页检查此Web服务。下面是我正在运行的jquery。 但它从不回发,因此不会发送邮件到我的收件箱。
  3. 我如何能够在我的朋友直播服务器上传这个网络服务,以便我可以在我的html页面中使用这个网络服务以及我将如何使用它,因为我认为如果我使用上面的ajax方法永远不会执行
  4. 第2项的代码:

    $("#btnSendMail").click(function(){
                         $.ajax({
                        type: "POST",
                        url: "http://audiomedia.dev.asentechdev1.com/MailSenderWS.asmx/SendMail",
                        data: "{'sendermail':'aelectricwala52@gmail.com', 'type':'standalone app', 'body':'success'}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function(msg) {
                          alert(msg)
                        },
                        error: function(msg){
                            alert(msg.responseText);
                        }
                      });
                      })
    

    提前致谢。

1 个答案:

答案 0 :(得分:0)

我看到两个语法错误。试试这个:

$("#btnSendMail").click(function(){
                    $.ajax({
                        type: "POST",
                        url: "http://localhost:16189/MailSenderWS.asmx/SendMail",
                        data: "{'sendermail':'aelectricwala52@gmail.com', 'type':'standalone app', 'body':'success'}",
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function(msg) {
                          alert(msg)
                        },
                        error: function(msg){
                            alert(msg);
                        }
                      });
                  });

前段时间我写了一篇关于asmx webservice方法的文章,并从Jquery调用它。这可能会对您有所帮助:http://www.tomot.de/en-us/article/8/asp.net/how-to-use-jquery-to-call-a-webservice-asmx-method

修改: 根据您的更新,我尝试按Ajax调用它,但这对我也不起作用。该服务似乎已正确部署,因为您可以在浏览器中调用该URL。我将您的服务添加为服务参考,称为您的方法,并使用Fiddler来捕获通信。

连接到服务器没有问题,但是服务的响应表明与您的电子邮件帐户相关的身份验证问题:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<SendMailResponse xmlns="http://tempuri.org/">
<SendMailResult>
Fail Reason: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. sk1sm6949585pbc.0
</SendMailResult>
</SendMailResponse>
</soap:Body>
</soap:Envelope>

尝试在没有Web服务的情况下从本地计算机发送电子邮件,并确保您正常工作。之后重新部署,你应该准备好了 我还建议您更改网络服务的网址,因为现在您已经在网上发布了网站并且没有涉及身份验证,有人可能会滥用它。

<强> EDIT2 : 我会告诉你我是如何使用Fiddler的。首先,您需要下载并安装它。

创建一个新的.net应用程序(例如ConsoleApplication)。在Solution Explorer中,右键单击项目,然后点击Add Service Reference。使用网址http://audiomedia.dev.asentechdev1.com/MailSender.asmx

这会在您的项目中生成一些代码。

启动Fiddler并在ConsoleApplication中执行此代码(根据生成的名称,您需要调整此示例):

    ServiceReference1.MailSenderSoapClient client = new ServiceReference1.MailSenderSoapClient();
    client.SendMail();

在Fiddler内部,你会在左侧网站上看到网络会话。添加了一个包含您网址的新条目。点击它。在底部区域的右侧视线中,您将看到消息

  

响应已编码,可能需要在检查前进行解码。   点击此处进行转换。

如果您点击该消息并选择TextView TabPage,您将从您的服务中获得此结果:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<SendMailResponse xmlns="http://tempuri.org/">
<SendMailResult>Success</SendMailResult>
</SendMailResponse>
</soap:Body>
</soap:Envelope>