Dart如何利用SOAP请求?

Dart如何利用SOAP请求?,soap,dart,Soap,Dart,我正在查找如何在Dart中执行SOAP请求。在查看HTTPRequest时,它实际上只提到了RESTful服务,并希望确保能够做到这一点 现在,我有我的服务器、用户名和密码。试图通过服务获得成功的身份验证,这样我就可以在后续调用时传递身份验证令牌 例如,在.NET中,它执行以下操作,然后将凭证存储在服务器端会话变量中,我在Dart中使用该变量作为起点 // create web service api object WebServiceAPI api = new WebServiceAPI();

我正在查找如何在Dart中执行SOAP请求。在查看HTTPRequest时,它实际上只提到了RESTful服务,并希望确保能够做到这一点

现在,我有我的服务器、用户名和密码。试图通过服务获得成功的身份验证,这样我就可以在后续调用时传递身份验证令牌

例如,在.NET中,它执行以下操作,然后将凭证存储在服务器端会话变量中,我在Dart中使用该变量作为起点

// create web service api object
WebServiceAPI api = new WebServiceAPI();

if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["ProxyUserName"]))
{
    System.Net.NetworkCredential nc = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["ProxyUserName"], ConfigurationManager.AppSettings["ProxyPassword"], ConfigurationManager.AppSettings["ProxyDomain"]);
    System.Net.CredentialCache cc = new System.Net.CredentialCache();
    cc.Add(new Uri(api.Url), "NTLM", nc);
    api.Credentials = cc;
}

api.AuthenticateCredential("api@admin", "admin", 0, 0);
HttpContext.Current.Session["api"] = api;
编辑:我正在添加一些示例数据,这样,如果有一个黑客我们可以利用它使某些东西工作,我们可能能够将其抽象和泛化

service asmx file:  
http://127.0.0.1:1337/service.asmx

Method we will be calling: (AuthenticateCredential)
http://127.0.0.1:1337/service.asmx?op=AuthenticateCredential

The sample SOAP request:
POST /service.asmx HTTP/1.1
Host: 127.0.0.1
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://foo.com/bar/320/Default/AuthenticateCredential"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <AuthenticateCredential xmlns="http://foo.com/barr/320/Default">
      <UserName>string</UserName>
      <Password>string</Password>
      <CurrentSystemLoginID>int</CurrentSystemLoginID>
      <CurrentCustomerID>int</CurrentCustomerID>
    </AuthenticateCredential>
  </soap:Body>
</soap:Envelope>

然后自然地,我将不得不写出来,修改信封中的字符串,字符串,int,int。以确保凭据是正确的。

AFAIK没有解决方案。Dart只有有限的XML包,我还没有见过实现SOAP本身的尝试。
一种可能的解决方法是委托给用另一种语言编写的服务器,该服务器将REST调用作为SOAP调用转发。

AFAIK没有解决方案。Dart只有有限的XML包,我还没有见过实现SOAP本身的尝试。
一种可能的解决方法是委托给用另一种语言编写的服务器,该服务器将REST调用作为SOAP调用转发。

我已经使用Dart为Blackboard的web服务执行了SOAP操作,所以这是可能的。为此,我必须以编程方式为每个请求构建SOAP信封。请求本身是使用http包的“post”方法发送的

无法说明应该如何设置请求,这取决于您尝试访问的web服务。对于HTTP头,我发送了一个“内容类型”text/xml;charset=utf-8'和指定SOAP方法的“SOAPAction”头。尸体是一个装满肥皂的信封


您可能需要花点时间构建信封,使其具有服务所需的正确格式/信息。我使用xml包来解析/解释响应。

我已经使用Dart为Blackboard的web服务执行了SOAP操作,所以这是可能的。为此,我必须以编程方式为每个请求构建SOAP信封。请求本身是使用http包的“post”方法发送的

无法说明应该如何设置请求,这取决于您尝试访问的web服务。对于HTTP头,我发送了一个“内容类型”text/xml;charset=utf-8'和指定SOAP方法的“SOAPAction”头。尸体是一个装满肥皂的信封



您可能需要花点时间构建信封,使其具有服务所需的正确格式/信息。我使用xml包来解析/解释响应。

当我查看开发人员网站和stackoverflow时,我注意到您在一年左右前对另一个用户说过这句话。我不确定它是否仍然相关,或者是否有秘密软件包处理了这个问题。可能有,但我在非常近的地方监视Dart区域,不记得看到任何提到的内容。2021年SOAP的情况是否仍然相同我不知道有什么变化,但是我已经有一段时间没有关注过了。当我在dev网站和stackoverflow上浏览的时候,我注意到你在一年左右前对另一个用户说过这句话。我不确定它是否仍然相关,或者是否有秘密软件包处理了这个问题。可能有,但我密切关注Dart区域,不记得看到过任何提及的内容。2021年SOAP的情况是否仍然相同?我不知道有什么变化,但我已经有一段时间没有密切关注。只是出于兴趣,您尝试使用什么服务,它使用什么身份验证协议?您是否查看过它是否支持不同的web服务样式?它有基本的身份验证,我正在慢慢地使用它。因为它是一个ASMX文件,我倾向于相信它是我试图连接的一个C/ASP Web服务,它处理一个样本数据库供以后使用,这就是HTTP基本身份验证,所以你可以在HTTP级别处理身份验证。我需要提交的值放在哪里,就像出于兴趣我想发布username=Naham和password=123456一样,您尝试使用什么服务,它使用什么身份验证协议?您是否查看过它是否支持不同的web服务样式?它有基本的身份验证,我正在慢慢地使用它。由于它是一个ASMX文件,我倾向于相信它是我试图连接的一个C/ASP Web服务,它处理一个样本数据库供以后使用,这就是HTTP基本身份验证,因此,您可以在HTTP级别处理auth。将我需要提交的值放在哪里,就像我想发布username=Naham和password=123456一样,您可以通过给出soap请求和restful解析的合理示例来详细说明吗?我可以给你一些给定m的样本数据
y WSDL,如果它对您有帮助的话。这可能更容易,我无法在注释中正确使用格式:我将通过问题编辑向您提供示例数据,然后,您可以编辑您的响应并使用示例数据包含dartlang和代码段吗?下面是一个新的DartPad,其中包含您编辑的信息:我注意到您的SOAP信封中没有标题。根据SOAP规范,我认为这是可选的,但根据您的服务,可能需要它,并且需要一些特定的设置/字段。您是否可以通过给出SOAP请求和restful解决方案的合理示例来详细说明?如果我的WSDL对您有帮助,我可以给您一些示例数据。这可能更简单,我无法在注释中正确使用格式:我将通过问题编辑向您提供示例数据,然后,您可以编辑您的响应并使用示例数据包含dartlang和代码段吗?下面是一个新的DartPad,其中包含您编辑的信息:我注意到您的SOAP信封中没有标题。根据SOAP规范,我认为这是可选的,但根据您的服务,可能需要它,并且需要一些特定的设置/字段。