C# 如何从SOAP响应创建JSON变量?

C# 如何从SOAP响应创建JSON变量?,c#,asp.net,json,web-services,soap,C#,Asp.net,Json,Web Services,Soap,我使用的是ASP.NET4.0,需要在页面上的javascript中返回一个对JSON变量的SOAP(XML)响应。我希望能够像调用任何JSON变量一样调用该变量及其属性。soapweb服务(.asmx)文件不在我需要构建客户端(接收请求并将其放入JSON变量)的服务器上。此外,为了使这更复杂,发送到Web服务的XML请求需要发送用户名和密码才能返回项目 Web服务的URL位于此处: 我想我会创建一个VisualStudioWeb应用程序项目(C#),我可以很好地完成并连接到Web服务,但是,这

我使用的是ASP.NET4.0,需要在页面上的javascript中返回一个对JSON变量的SOAP(XML)响应。我希望能够像调用任何JSON变量一样调用该变量及其属性。soapweb服务(.asmx)文件不在我需要构建客户端(接收请求并将其放入JSON变量)的服务器上。此外,为了使这更复杂,发送到Web服务的XML请求需要发送用户名和密码才能返回项目

Web服务的URL位于此处:

我想我会创建一个VisualStudioWeb应用程序项目(C#),我可以很好地完成并连接到Web服务,但是,这需要位于javascript用于输出来自Web服务方法的项的页面上。因此,在这种情况下,.aspx文件不起作用,因为它只需要在标记中的JSON变量中输出web服务响应的结果(可能在页面的头部,但对我来说在哪里并不重要)。或者它可以动态创建一个.JS文件(这可能会更好,因为如果我的服务器上存在JS文件,它将被缓存,并且不需要多次调用web服务)。然而,我不确定在VisualStudio中构建什么来实现这一点?我不确定如何将它输出到页面上。我想JSON变量也可以存储在服务器上的
Members.JSON
文件中,只需调用该文件即可加载所需的JSON

如何从SOAP、XML、响应返回JSON数组。。。将请求发送到另一台服务器后,SOAP请求的头中包含用户名和密码。这里有一个页面解释请求所需的XML以及响应的外观:

在同一个页面上,他们向您展示了如何通过PHP实现,但PHP不可用,我只能使用ASP.NET4.0。以下是他们的PHP方法:

$clientWS = new SoapClient('http://ws.idssasp.com/Members.asmx?wsdl');
$namespaceWS = 'http://ws.idssasp.com/Members.asmx';

$dmsClientU = '';
$dmsClientP = '';

$headerBodyWS = array('UserName' => $dmsClientU, 'Password' => $dmsClientP);
$headerWS = new SOAPHeader($namespaceWS, 'AuthorizeHeader', $headerBodyWS, false);
$clientWS->__setSoapHeaders(array($headerWS));

$results = $clientWS->GetMemberList();

print_r( $results );
在ASP.NET 4.0中,我如何做同样的事情,但不是返回XML结果,而是返回一个JSON变量,该变量在页面上的脚本标记中使用


或者我想得太多了,有更好的解决方案吗?

如果您连接到web服务并检索对象时没有问题,那么您应该能够利用SOAP响应的属性构造JSON对象

我建议在ASP.NET中创建一个web服务,在C#server代码中将SOAP响应转换为JSON,然后在页面的JavaScript中使用AJAX从web服务检索JSON。基本上,您将为您位于中间的项目创建您自己的专业化转换Web服务。 保留.asmx转换服务所需的服务器端凭据。无论您做什么,都不要将凭据放入web服务调用的客户端JavaScript中,即使这样可以避免编写服务器端代码

有关ASP.NET web服务的一些参考:


非常感谢您,这非常有帮助!认为凭证将进入另一个Web服务。但是在另一个Web服务中想到一个Web服务是令人困惑的。。。需要考虑一下我需要在站点根目录下的
web.config
文件中放些什么……还有,如何将SOAP转换为JSON?我没有看到任何这样的好例子,但可能它们确实存在……不要把新的web服务看作是另一个web服务的内部——它只是从您引用的外部服务中使用XML,并将其转换为JSON,以供页面的JavaScript使用。因为您的项目正在引用WSDL,所以SOAP响应应该作为普通的C#对象返回。在服务的web方法中,返回的C#对象只需序列化为JSON,这可以通过构造JSON字符串手动完成,但最好使用JSON.NET之类的工具: